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

如何用Python合并两个时间差10分钟、结构相似的CSV为DataFrame并补全缺失值

解决方案

实现逻辑

使用pandas的merge方法即可实现关联,默认无匹配的位置会自动填充NaN(即pandas中的空值),如果需要替换为0,调用fillna(0)方法即可。
你给出的期望输出实际是全外连接的效果(保留两个表的所有时间行),如果需要严格左连接(仅保留左表所有行,右表匹配不到的填空),调整how参数为left即可。

完整代码示例

import pandas as pd

# 读取两个CSV文件,自动解析date列为时间类型
df_out1 = pd.read_csv('out1.csv', parse_dates=['date'])
df_out2 = pd.read_csv('out2.csv', parse_dates=['date'])

# 修正out2的列名拼写错误
df_out2 = df_out2.rename(columns={'curret': 'current'})

# 全外连接,实现你期望的保留所有时间行的效果
merged_df = pd.merge(
    left=df_out1,
    right=df_out2,
    on='date', # 以date列为关联键
    how='outer' # 外连接保留两边所有行,若要左连接改为how='left'
)

# 按时间升序排序
merged_df = merged_df.sort_values('date').reset_index(drop=True)

# 【可选】将空值替换为0,不需要则注释掉该行
# merged_df = merged_df.fillna(0)

print(merged_df)

输出结果

运行上述代码后输出的结果和你预期一致:

date  speed  current
0 2021-10-03 02:00:01    5.0      NaN
1 2021-10-03 02:00:02    5.2   32.012
2 2021-10-03 02:00:03    5.1   32.120
3 2021-10-03 02:00:04    NaN   32.500

如果你的实际数据中时间列不是完全精确匹配,可以改用pd.merge_asof()方法实现按最近时间关联,避免匹配不到的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:24:03