我有许多列中值为“是”或“否”的列。我希望创建一个函数,添加一个额外的列,列出等于“是”的特定行的列。如果他们都等于“不”,那么它什么都不会返回。返回Dataframe中具有特定值作为新列的列的列表
例
Column 1 Column 2 Column 3 Column 4 Column 5 New Column
Yes No No Yes No Column 1, Column 4
我有许多列中值为“是”或“否”的列。我希望创建一个函数,添加一个额外的列,列出等于“是”的特定行的列。如果他们都等于“不”,那么它什么都不会返回。返回Dataframe中具有特定值作为新列的列的列表
例
Column 1 Column 2 Column 3 Column 4 Column 5 New Column
Yes No No Yes No Column 1, Column 4
假设所有列名都是字符串:
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
感谢根!这解决了它,并允许所有“否”的行留空。 – Oronic