我正在 pandas 中使用 split-apply-combine 模式通过自定义聚合函数对我的 df 进行分组。 但这会返回一个不需要的 DataFrame,其中分组列存在两次:在 MultiIndex 和列中。
以下是我的问题的简化示例。
比如说,我有这个 df
df = pd.DataFrame([[1,2],[3,4],[1,5]], columns=['A','B']))
A B
0 1 2
1 3 4
2 1 5
我想按 A 列进行分组,并仅保留 B 具有偶数值的那些行。因此所需的 df 是这样的:
B
A
1 2
3 4
自定义函数my_combine_func应该执行过滤。但是在 groupby 之后应用它,会导致在第二级中包含前一个索引的 MultiIndex。因此 A 列存在两次。
my_combine_func = group[group['B'] % 2 == 0]
df.groupby(['A']).apply(my_combine_func)
A B
A
1 0 1 2
3 1 3 4
如何应用自定义组函数并获得所需的 df?
最佳答案
这里使用 apply
更容易,这样你就可以得到一个 bool 数组:
df[df.groupby('A')['B'].apply(lambda x: x % 2 == 0)]
A B
0 1 2
1 3 4
关于pandas split-apply-combine 创建不需要的多重索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64959374/