You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas拼接两个DataFrame转字典后转回仅保留单个原表问题

问题成因
  • 首先是代码逻辑错误:你执行了opel_Concat.to_dict()但未将返回的字典结果赋值给opel_Dict变量,后续调用的opel_Dict大概率是之前预先生成的、仅包含df数据的旧变量,因此转回DataFrame后仅保留了df的内容。
  • 第二个常见隐藏诱因:如果两个原始DataFrame存在重复行索引,to_dict()默认以索引为key存储数据,同索引的行数据会发生覆盖,最终也会导致拼接后的数据丢失。例如df的索引范围是0N,df2的索引范围是04327,拼接后索引重复,转字典时后写入的同索引数据会覆盖先写入的内容,仅保留部分数据。
解决方法
  1. 修正变量赋值逻辑,同时拼接时重置索引避免重复:
# 拼接两个df,ignore_index=True会重置全局行索引,避免索引重复
opel_Concat = pd.concat([df,df2], ignore_index=True)
# 把转字典的结果正确赋值给opel_Dict
opel_Dict = opel_Concat.to_dict()
# 转回DataFrame
opel_Df = pd.DataFrame.from_dict(opel_Dict)
  1. 如果你需要保留原始的行索引,可以调整转字典的格式参数,按行存储避免索引覆盖:
opel_Concat = pd.concat([df,df2])
# orient='records'会把每行转为一个字典,整体存储为列表,不受重复索引影响
opel_Dict = opel_Concat.to_dict(orient='records')
# 直接传入字典列表生成DataFrame
opel_Df = pd.DataFrame(opel_Dict)
  1. 转换完成后可以执行print(opel_Df.shape)校验结果,确认行数等于df与df2的行数之和,列数与拼接后的列数一致即可。

内容的提问来源于stack exchange,提问作者user12722902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:06:05