假设我有一个 pandas 数据框:
id A B C D
id1 0 1 0 1
id2 1 0 0 1
id3 0 0 0 1
id4 0 0 0 0
我想选择每个 id 且列名称等于 1 的所有列,该列表将成为数据框中的新列。
预期输出:
id A B C D Result
id1 0 1 0 1 [B,D]
id2 1 0 0 1 [A,D]
id3 0 0 0 1 [D]
id4 0 0 0 0 []
我尝试了 df.apply(lambda row: row[row == 1].index, axis=1)
但“Result”的输出不是上面指定的形式
最佳答案
你可以做你想做的事情添加 .tolist():
df['Result'] = df.apply(lambda row: row[row == 1].index.tolist(), axis=1)
也就是说,您使用列表作为单列内的值的方法似乎与 Pandas 保持数据表格的方法(每个单元格只有一个值)相矛盾。使用嵌套列表而不是 pandas 来完成您想要做的事情可能会更好。
关于python-3.x - 获取每个 id 的所有列,其中该列等于某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66608729/