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

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

選擇性分組,np.where Pandas/Python 查詢

選擇性分組,np.where Pandas/Python 查詢

繁花不似錦 2021-07-04 11:20:51
df_haveA  B C1  1  101  1  101  2  51  3  61  4  7df_wantA  B C    D1  1  10  201  1  10  201  2  5   51  3  6   61  4  7   7僅當 B 列是 1 或 2 時才嘗試按 A、B 列分組。如果 B 是 1 或 2,則將 D 列輸出為 C 列的總和。否則保持設置列 D = 列 C。示例代碼給出錯誤:df_want['D']=np.where((df_want['B'].isin([1,2]),              df_want['A','B'].map(df_want.groupby(['A','B'])['C'].sum()),              df_want['C'])問題發生在這里: df_want['A','B'].map .. 如果我只放 df_want.A.map 則代碼運行但輸出錯誤。如果 col B 是 1 或 2,我只需要它來映射總和
查看完整描述

2 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

更改sumtransform('sum')

np.where(df_want['B'].isin([1,2]), 
             df_want.groupby(['A','B'])['C'].transform('sum'), df_want['C'])


查看完整回答
反對 回復 2021-07-06
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

df_have


A  B C

1  1  10

1  1  10

1  2  5

1  3  6

1  4  7

df_want


A  B C    D

1  1  10  20

1  1  10  20

1  2  5   5

1  3  6   6

1  4  7   7

僅當 B 列是 1 或 2 時才嘗試按 A、B 列分組。如果 B 是 1 或 2,則將 D 列輸出為 C 列的總和。否則保持設置列 D = 列 C。


示例代碼給出錯誤:


df_want['D']=np.where((df_want['B'].isin([1,2]), 

             df_want['A','B'].map(df_want.groupby(['A','B'])['C'].sum()), 

             df_want['C'])

問題發生在這里: df_want['A','B'].map .. 如果我只放 df_want.A.map 則代碼運行但輸出錯誤。如果 col B 是 1 或 2,我只需要它來映射總和


查看完整回答
反對 回復 2021-07-06
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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