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

合并字典中pandas时间序列DataFrame遇问题求指导

问题分析与解决方案

核心结论

pd.concat是处理你这种同结构时间序列DataFrame按行堆叠的最优选择,append已被pandas弃用不建议使用,merge适用于按关联键合并不同结构的表,不符合你的需求。

你的代码问题

  1. 循环覆盖变量:你在循环里每次都重新赋值out = pd.concat([v[1:]]),这会导致out每次都被当前的v[1:]覆盖,最终只保留最后一个DataFrame的数据。
  2. 表头赋值问题:直接用iloc[0]得到的是Series对象,直接赋值给columns可能会保留Series的索引,导致列名异常,需要转成列表格式。

修正后的代码

# 获取表头并转为列表(避免Series作为列名的问题)
header = next(iter(dict.values())).iloc[0].tolist()
# 收集所有需要合并的DataFrame片段(跳过第一行表头行)
frames = [v[1:] for v in dict.values()]
# 一次性合并所有片段,ignore_index重置行索引
out = pd.concat(frames, axis=0, ignore_index=True)
# 设置列名
out.columns = header
print(out)

补充说明

  • 一次性收集所有要合并的DataFrame到列表再concat,比循环里多次concat效率更高(pandas的concat操作是创建新对象,多次操作会额外消耗资源)。
  • 如果你的月度DataFrame本身已经有正确的列名(不需要从第一行提取),可以直接跳过表头提取步骤,直接合并即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:01:01