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

如何合并两个无数据丢失的DataFrame?时间范围及列结构存在差异

合并两个列名部分重叠、时间范围不同的DataFrame(无数据丢失)

嘿,我明白你要做的事情了——把两个时间范围不重叠、列名部分一致的DataFrame合并起来,还要保证所有数据都保留对吧?这在pandas里其实很容易实现,咱们一步步来:

步骤1:确保时间戳列是datetime类型

首先,你的两个DataFrame里的TimeStamp列目前是字符串格式,为了后续能正确处理时间顺序,咱们得先把它转换成pandas的datetime类型:

import pandas as pd

# 假设你的DataFrame1叫df1,DataFrame2叫df2
df1['TimeStamp'] = pd.to_datetime(df1['TimeStamp'])
df2['TimeStamp'] = pd.to_datetime(df2['TimeStamp'])

步骤2:使用concat函数合并(保留所有行和列)

因为咱们要保留所有观测值和所有变量,哪怕某个DataFrame里没有的列,用pd.concat()配合join='outer'就能实现,它会把两个DataFrame按行堆叠,缺失的列值自动用NaN填充:

merged_df = pd.concat([df1, df2], axis=0, join='outer', ignore_index=True)

这里的参数解释:

  • axis=0:按行方向合并(把df2放在df1下面)
  • join='outer':保留所有列,不管两个DataFrame有没有共同列
  • ignore_index=True:重置合并后的索引,避免出现重复的索引值

步骤3(可选):按时间戳排序

如果需要合并后的DataFrame按时间顺序排列,可以加这一步:

merged_df = merged_df.sort_values('TimeStamp').reset_index(drop=True)

示例验证

用你给出的示例数据来测试的话,合并后的结果会包含所有12行(3+9),以及所有9个列(A、B、C、D、E、F、G、H),df2里没有的G、H列会填充NaN,df1里原本有的数据则完整保留。

比如合并后的前几行大概是这样的:

TimeStampABCDEFGH
2017-06-06 00:00:0071.9471.9479.065444.68440.996NaNNaN
2017-06-06 00:15:0071.9471.6380.065345.96640.708NaNNaN
...........................
2018-01-15 00:00:0049.923862.2187052.312563.457498454

这样就完全满足你的需求啦——没有丢失任何数据,所有列和行都保留了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:24:12