我有一个格式为
的数据框架black orange yellow green
1 0 1 0 1
2 0 0 0 1
3 1 0 0 0
我想创建另一个列,将告诉哪些颜色存在,所以最终输出应该是:
black orange yellow green colours
1 0 1 0 1 orange and green
2 0 0 0 1 green
3 1 0 0 0 black
提前感谢。附注:忘了补充,还有更多的列——更多的颜色。
使用DataFrame.dot
作为列名,然后删除5
的最后值:
df['colours'] = df.astype(bool).dot(df.columns.astype(str) + ' and ').str[:-5]
print (df)
black orange yellow green colours
1 0 1 0 1 orange and green
2 0 0 0 1 green
3 1 0 0 0 black
或者使用apply
:
>>> df['colours'] = df.apply(lambda x: ' and '.join(x[x == 1].index), axis=1)
>>> df
black orange yellow green colours
1 0 1 0 1 orange and green
2 0 0 0 1 green
3 1 0 0 0 black
>>>