我有许多列,其中包含“是”或“否”的值。我希望创建一个函数,添加一个额外的列,列出特定行的列,它们等于“是”。如果它们都等于“否”,它就不会返回任何东西。
示例
Column 1 Column 2 Column 3 Column 4 Column 5 New Column
Yes No No Yes No Column 1, Column 4
答案 0 :(得分:1)
假设您的所有列名都是字符串:
df['New Column'] = df.apply(lambda row: ', '.join(row.index[row == 'Yes']), axis=1)
如果您有非字符串列名(例如整数),您可以执行基本相同的操作,但首先将类型转换为字符串:
df['New Column'] = df.apply(lambda row: ', '.join(row.index.astype(str)[row == 'Yes']), axis=1)
对于每一行,我在行的索引(即列)上使用布尔索引,只选择'Yes'
的位置。然后我只是在所有'Yes'
列名称上进行字符串连接。
示例输出(带有两个额外的样本行):
Column 1 Column 2 Column 3 Column 4 Column 5 New Column
0 Yes No No Yes No Column 1, Column 4
1 No No No No No
2 No Yes No No No Column 2
答案 1 :(得分:0)