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個贊
更改sum
為transform('sum')
np.where(df_want['B'].isin([1,2]), df_want.groupby(['A','B'])['C'].transform('sum'), df_want['C'])

蠱毒傳說
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,我只需要它來映射總和
添加回答
舉報
0/150
提交
取消