亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何創建一個列,使其值是該行中第一次出現在它們自己的列中的 1 的數量?

我如何創建一個列,使其值是該行中第一次出現在它們自己的列中的 1 的數量?

婷婷同學_ 2022-12-14 21:15:11
我如何使用熊貓進行此操作?初始 Df:    A B C D0   0 1 0 01   0 1 0 02   0 0 1 13   0 1 0 14   1 1 0 05   1 1 1 0最終 Df:    A B C D Param0   0 1 0 0     11   0 1 0 0     02   0 0 1 1     23   0 1 0 1     04   1 1 0 0     15   1 1 1 0     0基本上 Param 是該行中第一次出現在其自己的列中的 1 的編號。示例:B 列中的索引 0 : 1 是第一次出現,因此 Param1 = 1索引 1 :沒有一個 1 是第一次出現在它自己的列中,因此 Param1 = 0索引 2 : C 列中的 1 和 D 首次出現在它們的列中,因此 Paramm1 = 2索引 3:沒有一個 1 是第一次出現在它自己的列中,因此 Param1 = 0索引 4:A 列中的 1 首次出現在該列中,因此 Paramm1 = 1索引 5:沒有一個 1 是第一次出現在它自己的列中,因此 Param1 = 0
查看完整描述

3 回答

?
慕婉清6462132

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


查看完整回答
反對 回復 2022-12-14
?
茅侃侃

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


查看完整回答
反對 回復 2022-12-14
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

假設這些是整數,您可以使用 cumsum() 兩次來隔離第一次出現的 1。


df2 = (df.cumsum() > 0).cumsum() == 1

df['Param'] = df2.sum(axis = 1)

print(df)

如果 df 元素是字符串,您應該首先將它們轉換為整數。


df = df.astype(int)


查看完整回答
反對 回復 2022-12-14
  • 3 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號