gpt4 book ai didi

python - 按总和分组作为新列名

转载 作者:太空狗 更新时间:2023-10-30 00:34:25 24 4
gpt4 key购买 nike

我正在执行按 ID 分组的功能,并使用此 python 代码对与这些 ID 关联的 $ 值求和:

df = df.groupby([' Id'], as_index=False, sort=False)[["Amount"]].sum();

但它不会重命名该列。因此,我尝试这样做:

`df = df.groupby([' Id'], as_index=False, sort=False)`[["Amount"]].sum();.reset_index(name ='Total Amount')

但它给了我错误提示 TypeError: reset_index() got an unexpected keyword argument 'name'

所以我最终在这篇文章之后尝试这样做:Python Pandas Create New Column with Groupby().Sum()

df = df.groupby(['Id'])[["Amount"]].transform('sum'); 

但还是不行。

我做错了什么?

最佳答案

我认为您需要删除参数 as_index=False 并使用 Series.reset_index , 因为这个参数返回 df 然后是 DataFrame.reset_index参数 name 失败:

df = df.groupby('Id', sort=False)["Amount"].sum().reset_index(name ='Total Amount')

或者先重命名列:

d = {'Amount':'Total Amount'}
df = df.rename(columns=d).groupby('Id', sort=False, as_index=False)["Total Amount"].sum()

示例:

df = pd.DataFrame({'Id':[1,2,2],'Amount':[10, 30,50]})
print (df)
Amount Id
0 10 1
1 30 2
2 50 2

df1 = df.groupby('Id', sort=False)["Amount"].sum().reset_index(name ='Total Amount')
print (df1)
Id Total Amount
0 1 10
1 2 80

d = {'Amount':'Total Amount'}
df1 = df.rename(columns=d).groupby('Id', sort=False, as_index=False)["Total Amount"].sum()
print (df1)
Id Total Amount
0 1 10
1 2 80

但如果需要在原始 df 中使用 sum 的新列,请使用 transform并将输出分配给新列:

df['Total Amount'] = df.groupby('Id', sort=False)["Amount"].transform('sum')
print (df)
Amount Id Total Amount
0 10 1 10
1 30 2 80
2 50 2 80

关于python - 按总和分组作为新列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com