说我有以下数据框:
ID Brick Vinyl Stone
1 Yes No No
2 No Yes No
3 No No Yes
4 Yes Yes No
5 No No No
如何根据这些列的名称创建新列,以便我最终得到以下内容?
ID Brick Vinyl Stone Type
1 Yes No No Brick
2 No Yes No Vinyl
3 No No Yes Stone
4 Yes Yes No Multiple
5 No No No Other
请注意,ID 4和5要么是'是'对于多列或全部为“否”'。我在' Type'中记录的回复对于这两个条目,不必是多个'或者'其他'特别是 - 如果有一种默认的方式来记录所需的信息,那么它也会起作用。谢谢!
答案 0 :(得分:3)
你可以做到
In [146]: s = df[['Brick', 'Vinyl', 'Stone']].eq('Yes')
In [147]: sm = s.sum(1)
In [148]: df['Type'] = np.where(sm.eq(0), 'Other',
np.where(sm.eq(2), 'Multiple', s.idxmax(1)))
In [149]: df
Out[149]:
ID Brick Vinyl Stone Type
0 1 Yes No No Brick
1 2 No Yes No Vinyl
2 3 No No Yes Stone
3 4 Yes Yes No Multiple
4 5 No No No Other