使用 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/