python - 如何展平 Pandas 中 groupby 操作的结果?

标签 python pandas

使用 Pandas 数据框,有没有一种方法可以展平 groupby 操作的结果,而不必使用临时数据框,然后将其合并到原始数据框?

假设我需要创建一个依赖于聚合操作的“结果”列,就像在这个场景中一样:

import pandas as pd

df = pd.DataFrame({'box': [1,1,1,2,2,3,3,3,3], 'item': ['apple', 'durian', 'pear', 'orange', 'banana', 'apple', 'pear', 'durian', 'orange']})

df['subindex'] = df.groupby('box').cumcount()+1

tmp_df = df.groupby('box')['subindex'].apply(lambda x: (1/x**2).sum()).reset_index(name='result')

df = pd.merge(df, tmp_df, how='inner', on='box')

有没有一种方法可以让我仅在一行代码的最后两行中实现相同的功能,而不必合并两个不同的数据帧?

最佳答案

我们可以将两个步骤合二为一

df['result']=(df.groupby('box').cumcount()+1).groupby(df['box']).\
                  transform(lambda x : (1/x**2).sum())
0    1.361111
1    1.361111
2    1.361111
3    1.250000
4    1.250000
5    1.423611
6    1.423611
7    1.423611
8    1.423611
dtype: float64

关于python - 如何展平 Pandas 中 groupby 操作的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61584085/

相关文章:

python - 在robot framework中申请loop后,报错如下- Keyword name cannot be empty

python - 计算 torch 张量的协方差(2d 特征图)

python - 如何映射两个数据帧并保持一个数据帧的值相同

python - pandas 否定运算符的替代方案

python - Pandas:按标签获取唯一的 MultiIndex 级别值

python - 在python plotly包中的散点图中操纵图例

python - 循环中的最后一个文件未在解释器 session 期间写入

python - 基于现有数据库表的动态 Django 模型创建

python - 自定义样式 Pandas 数据框

python - 基于列值拆分/扩展数据框