如何查找pandas两个DataFrame时间范围内的缺失日期并生成新表
首先确保已经导入pandas库,且两个DataFrame的Dates列已转换为标准datetime格式,避免字符串匹配误差:
import pandas as pd # 统一转换日期列格式 df_a['Dates'] = pd.to_datetime(df_a['Dates']) df_b['Dates'] = pd.to_datetime(df_b['Dates'])
需求1:找出DataFrame B缺失的日期时间
直接通过集合匹配过滤即可得到所有B中缺失的时间点:
missing_times = df_a.loc[~df_a['Dates'].isin(df_b['Dates']), 'Dates']
输出的missing_times即为所有B中不存在、但A中有的缺失时间。
需求2:生成带完整时间序列的DataFrame C
以A的完整时间为基准,左关联B的观测数据即可:
# 左连接保留A的所有时间,匹配B的对应数值 df_c = pd.merge(df_a, df_b, on='Dates', how='left') # 可选操作:如果需要将缺失的观测值填充为指定值(比如填充0),可补充以下代码 df_c['Car'] = df_c['Car'].fillna(0).astype(int)
最终得到的df_c会保留A的所有时间,匹配到B的数值会正常展示,未匹配到的默认显示NaN,执行可选填充操作后可替换为你需要的数值。
内容的提问来源于stack exchange,提问作者Giorgos
相关产品推荐
相关产品推荐

