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)
添加回答
舉報