python - 使用 Pandas 聚合数据并保留表结构和列名的更好方法

标签 python pandas

假设我有一个像下面这样的数据集

df = pd.DataFrame({'x1':['a','a','b','b'], 'x2':[True, True, True, False], 'x3':[1,1,1,1]})
df
  x1     x2  x3
0  a   True   1
1  a   True   1
2  b   True   1
3  b  False   1

我经常想执行分组聚合操作,我按多列分组并将多个函数应用于一列。此外,我通常不想要多索引、多级表。为了完成这个,我用了三行代码,这似乎太多了。

例如

bg = df.groupby(['x1', 'x2']).agg({'x3': {'my_sum':np.sum, 'my_mean':np.mean}})
bg.columns = bg.columns.droplevel(0)
bg.reset_index()

有没有更好的方法?不要提示,但我来自 R/data.table 背景,像这样的东西是一个很好的单行,比如

df[, list(my_sum=sum(x3), my_mean=mean(x3)), by=list(x1, x2)]

最佳答案

这个怎么样:

In [81]: bg = df.groupby(['x1', 'x2'], as_index=False)['x3'].agg({'my_sum':np.sum, 'my_mean':np.mean})

In [82]: print bg
  x1     x2  my_sum  my_mean
0  a   True       2        1
1  b  False       1        1
2  b   True       1        1

关于python - 使用 Pandas 聚合数据并保留表结构和列名的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625318/

相关文章:

python - 如何访问 python 命令行选项(不是 args)

python - NumPy:一次对许多小矩阵进行点积

python - 根据另一列中的条件填充多个数据框列

python - Pandas 从距离矩阵中按 ID 提取列和行

python - 使用 networkx 将图形转换为完整图形的最快方法

python - 如何安装ChartDirector?

pandas - 在 Pandas Dataframe 中拆分列标题并复制行值

python - 按分数比较数据帧列中的值

python - 如何为 ConvLSTM2D 模型 reshape 多元时间序列数据

python - 日期不匹配时如何在 Pandas 中加入时间序列?