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

如何基于小数据框填充更大的空数据框?

用Pandas匹配填充时间序列数据框的方法

这问题其实用Pandas的合并或者索引匹配就能轻松解决,我给你两种常用的方案,你可以根据自己的情况选:

方案一:左连接合并(最直观)

核心思路是用hours和minutes作为匹配的键,把小数据框的内容“贴”到大数据框对应时间的行上,没匹配到的行自动保留NA。

假设你已经把两个数据框加载到Pandas里(分别叫big_df和small_df),步骤如下:

  1. 先确保两个数据框的时间列类型一致(都是整数,避免因为类型不匹配导致匹配失败):
import pandas as pd

big_df[['hours', 'minutes']] = big_df[['hours', 'minutes']].astype(int)
small_df[['hours', 'minutes']] = small_df[['hours', 'minutes']].astype(int)
  1. 因为你的大数据框里color和length已经是全NA的空列,我们可以先删掉它们,再和小数据框做左连接:
# 移除大数据框的空列
big_df_clean = big_df.drop(['color', 'length'], axis=1)

# 左连接:保留大数据框的所有时间行,匹配小数据框的对应值
final_df = pd.merge(big_df_clean, small_df, on=['hours', 'minutes'], how='left')

这样得到的final_df就是你想要的结果:所有连续时间行都保留,有测量数据的时间点会填充color和length,没有的还是NA。

方案二:多级索引匹配(更简洁)

如果你的数据框时间列是严格的小时+分钟组合,用多级索引匹配会更高效:

# 给小数据框设置(hours, minutes)为多级索引
small_df_indexed = small_df.set_index(['hours', 'minutes'])

# 给大数据框设置同样的多级索引,然后直接赋值匹配
big_df = big_df.set_index(['hours', 'minutes'])
big_df[['color', 'length']] = small_df_indexed[['color', 'length']]

# 恢复原来的列结构
final_df = big_df.reset_index()

Pandas会自动根据多级索引匹配对应行,没匹配到的位置自然保留NA,非常省心。

验证一下

你可以随便挑几个时间点检查,比如小数据框里的hours=0, minutes=15,在final_df里这一行的color应该是G,length是2;而hours=0, minutes=1的行还是NA,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:07:05