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

标签 python python-3.x pandas

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

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

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/

相关文章:

pandas - Statsmodels 马赛克图 ValueError : cannot convert float NaN to integer

python - 使用 numpy 数组与 DataFrame 屏蔽 pandas DataFrame

python - 具有 "if"条件的一行多变量值赋值

python - 将内容直接发送到 scrapy pipeline

python-3.x - 过滤并获取数据框中条件之间的行

python - 存储在字典中时评估生成字符串的语句 'later'

python - Pandas 雅虎金融数据阅读器

python - 如何在Python中验证散列(sha1)密码?

python - 多个海龟,多个随机移动

python - 有没有办法在 python 中的用户定义类上定义 list(obj) 方法?