从 pandas 列中提取满足条件的属性

2023-12-24

假设我有一个 3 个不同变量的频率表:M1、M2 和 M3,在不同的实例上:P1、... P4:

tupl = [(0.7, 0.2, 0.1), (0,0,1), (0.2,0.6,0.2), (0.6,0.4,0)]

df_test = pd.DataFrame(tupl, columns = ["M1", "M2", "M3"], index =["P1", "P2", "P3", "P4"])

现在,对于每一行,我希望能够将每个变量的出现情况提取为字符串,这样最终的输出将类似于:

output = pd.DataFrame([("M1+M2+M3"), ("M3"), ("M1+M2+M3"), ("M1+M2")], columns = ["label"], index = ["P1", "P2", "P3", "P4"])

我考虑过使用类似 np.where(df_test!=0) 的东西,但是如何将列名称作为字符串粘贴到输出中?


您可以使用 np.where 用标签填充单元格,然后将它们连接为字符串。

(
    df_test.gt(0).apply(lambda x: np.where(x, x.name, None))
    .apply(lambda x: '+'.join(x.dropna()), axis=1)
    .to_frame('label')
)


    label
P1  M1+M2+M3
P2  M3
P3  M1+M2+M3
P4  M1+M2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 pandas 列中提取满足条件的属性 的相关文章

随机推荐