gpt4 book ai didi

python - pandas groupby 返回额外的索引

转载 作者:行者123 更新时间:2023-12-01 21:56:42 24 4
gpt4 key购买 nike

dft = pd.DataFrame({'C1': ['A','A','B','B'], 
'C2': [1,2,3,4]})

def lam3(df):
return pd.DataFrame({'X': ['C','D','E'],
'Y': [11,22,33]})

鉴于上面的数据框和函数(我无法更改),我想运行 groupby+apply 这样每个组都返回一个数据框,就像这样

    C1  C2  X   Y
0 A 1 C 11
1 A 1 D 22
2 A 1 E 33
3 A 2 C 11
4 A 2 D 22
5 A 2 E 33
6 B 3 C 11
7 B 3 D 22
8 B 3 E 33
9 B 4 C 11
10 B 4 D 22
11 B 4 E 33

下面的操作给出了一个额外的数字索引列:

dft.groupby(['C1','C2']).apply(lam3)

所以我必须执行以下操作才能得到我想要的:

dft.groupby(['C1','C2']).apply(lam3).reset_index().drop(columns='level_2')

显然,这不是通用的,因为 level_2 取决于我在 groupby 中使用的列数,盲目删除以“level”开头的列可能会删除原始列。

如何使用 lambda 函数在不返回额外索引的情况下返回 groupby 中的数据框?

问题类似于this ,但这里的每个组都返回一个数据框,而不是一个系列。

编辑:这里的 lam3 只是一个示例函数,用于演示。在真实版本中,可以有依赖df的操作。关键是 lam3 函数在 groupby 的上下文中返回一个数据帧。所以交叉连接没有帮助

最佳答案

在你的groupby中使用group_keys=False

dft.groupby(['C1','C2'], group_keys=False).apply(lam3)

关于python - pandas groupby 返回额外的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com