我有一個熊貓資料框,其列是
cat1, cat2, cat3, cat4, value1, value2
我想添加一個新列 value3 并為其賦值,該值取決于 value1 和 value1 對 cat4 中所有值的總和。是否可以以矢量化/高效的方式執行此操作,還是我需要撰寫一個 for 回圈?
例如,如果值是
cat1, cat2, cat3, cat4, value1, value2
A,A,A,A, 3,1
A,A,A,B, 5,2
A,A,A,C, 22,4
A,A,X,A, 0,5
A,A,X,B, 4,5
A,A,X,C, 6,5
我想要的最終結果是
cat1, cat2, cat3, cat4, value1, value2, value3
A,A,A,A, 3,1, 30
A,A,A,B, 5,2, 30
A,A,A,C, 22,4, 30
A,A,X,A, 0,5, 10
A,A,X,B, 4,5, 10
A,A,X,C, 6,5, 10
其中,當 cat1、cat2 和 cat3 的所有條目相同時,value3 是具有不同 cat4 條目的 value1 值的相同總和。謝謝!
uj5u.com熱心網友回復:
IIUC,您可以transform('sum')
每組 cat1/cat2/cat3:
df['value3'] = (df.groupby(['cat1', 'cat2', 'cat3'])
['value1'].transform('sum'))
輸出:
cat1 cat2 cat3 cat4 value1 value2 value3
0 A A A A 3 1 30
1 A A A B 5 2 30
2 A A A C 22 4 30
3 A A X A 0 5 10
4 A A X B 4 5 10
5 A A X C 6 5 10
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505815.html
上一篇:R中的多個ggplot
下一篇:無法讀取未定義錯誤的屬性“0”