python - 使用 groupby 对 Pandas DataFrame 进行计算,然后将其传回到 DataFrame 中?

标签 python pandas dataframe grouping

我有一个数据框,我想将其按两个变量分组,然后在这些变量内执行计算。有没有什么简单的方法可以做到这一点,并在完成后将信息放回到 DataFrame 中,即像这样:

df=pd.DataFrame({'A':[1,1,1,2,2,2,30,12,122,345],
'B':[1,1,1,2,3,3,3,2,3,4],
'C':[101,230,12,122,345,23,943,83,923,10]})

total = []
avg = []
AID = []
BID = []
for name, group in df.groupby(['A', 'B']):
    total.append(group.C.sum())
    avg.append(group.C.sum()/group.C.nunique())
    AID.append(name[0])
    BID.append(name[1])

x = pd.DataFrame({'total':total,'avg':avg,'AID':AID,'BID':BID})

但显然效率更高?

最佳答案

您可以在groupby之后使用pandas聚合函数:

import pandas as pd
import numpy as np
df.groupby(['A', 'B'])['C'].agg({'total': np.sum, 'avg': np.mean}).reset_index()

#      A    B   total          avg
# 0    1    1     343   114.333333
# 1    2    2     122   122.000000
# 2    2    3     368   184.000000
# 3   12    2      83    83.000000
# 4   30    3     943   943.000000
# 5  122    3     923   923.000000
# 6  345    4      10    10.000000

关于python - 使用 groupby 对 Pandas DataFrame 进行计算,然后将其传回到 DataFrame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38575673/

相关文章:

python - 在 numpy 数组中查找多个值的行索引

Python:使用 Pandas 创建多列系列

python - 更新我的 python 安装上的 SQLite3 版本

python - 如何使用 python win32com 或 comtypes 中的 COM 访问 IRTDServer?

python - OpenGL - 从不同角度渲染同一场景,无需重绘所有内容

python - 如何使用 python pandas 比较 unicode 日期 u'2006-07-23' 格式和 25-06-15 08 :42:43. 830000000 PM?

excel - 使用 Pandas 在 Python 中复制 Excel 索引匹配

python - Pandas:添加新列,计算此人达到一天最高分的频率

按指定数量重复 df 列中的值,并将整数计数连接到重复值

python - 如何填充具有以天数表示的差异的两行之间的空白