gpt4 book ai didi

python - 如何向 df 添加一列以对 A 列中条目的所有匹配值求和?

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:23 25 4
gpt4 key购买 nike

我有一个包含一系列日期的数据框、每天的活跃用户以及该用户当天的事件。我想添加一列,在另一列中提供每个用户在总时间跨度内的事件总数。

我可以让它与这段代码一起工作,但我确信有一种更优雅的方法来做到这一点。请告诉我还有什么可以更好的!

df1 = pd.DataFrame({'users': ['Sara', 'James', 'Sara', 'James'],
'events': [3, 2, 5, 1]
})
df2 = df1.groupby('users').sum()
df2.rename(columns= {'events' : 'total'}, inplace=True)
df3 = pd.merge(df1, df2, how='left', on='users')

这给了我想要的输出,每个 Sara 行有 8 个,每个 James 行有 3 个。

最佳答案

确实有,你知道transform方法吗?它返回一个与当前数据帧格式相同的 groupby

df1['total'] = df1.groupby('users').transform('sum')
print(df1)
users events total
0 Sara 3 8
1 James 2 3
2 Sara 5 8
3 James 1 3

只是作为一个测试

df1 == df3
users events total
0 True True True
1 True True True
2 True True True
3 True True True

更多信息:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.transform.html

https://pbpython.com/pandas_transform.html

关于python - 如何向 df 添加一列以对 A 列中条目的所有匹配值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58073200/

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