如何将字典中的pandas DataFrame按规则合并生成新字典?
问题原因
pandas.DataFrame.append() 不会修改原DataFrame对象,只会返回拼接后的新对象,你原代码没有接收返回值,所以字典里的值一直是空的。同时append方法已经被pandas废弃,更推荐用pd.concat()做多个DataFrame的拼接操作。
实现方案
适配固定分组逻辑的代码
如果你的分组规则是固定合并[1,2]、[3,4]两组,可以直接用以下代码实现:
import pandas as pd d = {1: pd.DataFrame({'a':[1,2],'b':[3,4]}), 2: pd.DataFrame({'a':[3,4],'b':[5,6]}), 3: pd.DataFrame({'a':[10,11],'b':[12,13]}), 4: pd.DataFrame({'a':[12,13],'b':[14,15]})} d_new = {} for group_key in [1,3]: # 提取当前组需要合并的所有DataFrame merge_dfs = [d[group_key], d[group_key+1]] # 拼接后存入新字典,ignore_index=True可以重置索引,不需要可以删除 d_new[group_key] = pd.concat(merge_dfs, ignore_index=True)
通用分组版本
如果你的分组规则是所有键排序后两两合并,以每组第一个键为新键,可以写为更通用的形式,不需要硬编码分组:
sorted_keys = sorted(d.keys()) # 每两个键分为一组 key_groups = [sorted_keys[i:i+2] for i in range(0, len(sorted_keys), 2)] d_new = {} for g in key_groups: d_new[g[0]] = pd.concat([d[k] for k in g], ignore_index=True)
内容的提问来源于stack exchange,提问作者user7864386
相关产品推荐
相关产品推荐

