3 回答
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
我會(huì)做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貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
您可以檢查重復(fù)值,乘以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貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
假設(shè)這些是整數(shù),您可以使用 cumsum() 兩次來(lái)隔離第一次出現(xiàn)的 1。
df2 = (df.cumsum() > 0).cumsum() == 1
df['Param'] = df2.sum(axis = 1)
print(df)
如果 df 元素是字符串,您應(yīng)該首先將它們轉(zhuǎn)換為整數(shù)。
df = df.astype(int)
添加回答
舉報(bào)
