[英]Sum by ID for many columns in a Python DataFrame using for loop and groupby
我有一個數據框
名稱……值……標記……點數
瓦斯.......... 234 ..... 10 ....... 16
拉胡.. .. 324 .. . . . . . . . . . . . . . . . . . . . . . . . . . .
瓦斯 ........ 200 ...... 10 ...... 12
斯里蘭卡 ..... 66 .... 10 .... 52
天真..... 76 ..... 10 ..... 43
抹布………… 50…………10…………12
raghu .... 50 .... 10 .... 23
普拉圖 ... 100 ...... 10 ...... 21
斯里蘭卡 ...... 100 ...... 10 ...... 54
斯里蘭卡 ...... 25 ...... 10 ...... 34
斯里蘭卡 ...... 25 ...... 10 ...... 23
普拉圖 ... 25 ... ... 10 ... 43
血管...... 125 .... 10 .... 23
天真...... 50 .... 10 .... 53
這里的名稱列是 ID,基於每個名稱,我需要使用 groupby 和 for 循環總結所有相應的列。 我嘗試使用 groupby 對一列進行操作,但是當我嘗試對多列進行操作時,我失敗了。 以下步驟有助於對一列求和:
df[New_VALUE] = df.groupby(["name"])["value"].transform(sum)
但是當嘗試所有列時,它會拋出不同的錯誤。 我是 Python 的新手。
我認為循環不是必需的,只使用join
+ transform
+ add_prefix
:
df = df.join(df.groupby("name").transform(sum).add_prefix('sum_'))
print (df)
name value marks points sum_value sum_marks sum_points
0 vas 234 10 16 434 20 28
1 raghu 324 10 12 424 30 47
2 vas 200 10 12 434 20 28
3 sri 66 10 52 216 40 163
4 naveen 76 10 43 126 20 96
5 raghu 50 10 12 424 30 47
6 raghu 50 10 23 424 30 47
7 prathu 100 10 21 125 20 64
8 sri 100 10 54 216 40 163
9 sri 25 10 34 216 40 163
10 sri 25 10 23 216 40 163
11 prathu 25 10 43 125 20 64
12 vasu 125 10 23 125 10 23
13 naveen 50 10 53 126 20 96
但如果需要它進行其他處理:
for c in df.columns[1:]:
df['sum_{}'.format(c)] = df.groupby("name")[c].transform(sum)
您還可以使用agg
對所有列的所有行求和
df = df.groupby('name').agg(sum)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.