Pandas groupby().apply()重复传入同一组数据,仅组名变化问题求助
问题排查与解决方案
可能的原因
这种异常通常和以下情况有关:
- DataFrame是其他数据的视图而非独立副本,导致分组后所有组指向同一底层数据
- 索引重复或不连续,引发Pandas分组逻辑异常
- 特定Pandas版本的
groupby.applybug
分步解决
先验证分组本身是否正常
跳过apply,直接遍历分组结果,确认组名和组数据是否匹配:for group_name, group_data in df4.groupby(['branch', 'barcode']): print(group_name) print(group_data[['barcode', 'branch']].iloc[0])- 如果这里输出仍然异常,说明分组逻辑本身有问题,需要检查数据;如果正常,问题出在
apply环节。
- 如果这里输出仍然异常,说明分组逻辑本身有问题,需要检查数据;如果正常,问题出在
重置索引并创建独立副本
最常见的修复方式是确保DataFrame是独立副本且索引唯一:# 重置索引,丢弃旧索引 df4 = df4.reset_index(drop=True) # 创建独立副本,切断与原数据的引用关联 df4 = df4.copy() # 重新执行分组操作 def main_features(df): print(df.name) print(df[['barcode', 'branch']].iloc[0]) df5 = df4.groupby(['branch', 'barcode']).apply(main_features)检查并升级Pandas版本
某些旧版本(如0.24.x及更早)存在groupby.apply的对象引用bug,升级到稳定版(如1.5.x或2.x)可解决:pip install --upgrade pandas替换apply为其他方法(可选)
如果apply仍有问题,可尝试用agg或transform替代(需适配你的函数逻辑),或用groupby().apply(lambda x: ...)的匿名函数形式测试。
内容的提问来源于stack exchange,提问作者Bigga
相关产品推荐
相关产品推荐

