3 回答
TA贡献1804条经验 获得超2个赞
我会做idxmax和value_counts
df['Param']=df.idxmax().value_counts().reindex(df.index,fill_value=0)
df
A B C D Param
0 0 1 0 0 1
1 0 1 0 0 0
2 0 0 1 1 2
3 0 1 0 1 0
4 1 1 0 0 1
5 1 1 1 0 0
TA贡献1842条经验 获得超22个赞
您可以检查重复值,乘以df和求和:
df['Param'] = df.apply(lambda x: ~x.duplicated()).mul(df).sum(1)
输出:
A B C D Param
0 0 1 0 0 1
1 0 1 0 0 0
2 0 0 1 1 2
3 0 1 0 1 0
4 1 1 0 0 1
5 1 1 1 0 0
TA贡献1772条经验 获得超5个赞
假设这些是整数,您可以使用 cumsum() 两次来隔离第一次出现的 1。
df2 = (df.cumsum() > 0).cumsum() == 1
df['Param'] = df2.sum(axis = 1)
print(df)
如果 df 元素是字符串,您应该首先将它们转换为整数。
df = df.astype(int)
添加回答
举报
