Pandas合并DataFrame后结果为空表,如何解决?
解决合并DataFrame得到空结果的问题
问题原因
两个DataFrame的Time列日期部分完全不重叠:resampled_fd的时间是2021-12-11,而df的时间是1900-01-01。pd.merge()默认按整列值完全匹配,没有共同的Time值,所以返回空DataFrame。
解决方法
根据需求,有两种处理方向:
方向1:忽略日期,仅按时分秒匹配
如果需要按**同一时间点(不管日期)**合并,提取时间部分作为匹配键:
- 先将
Time列转为datetime类型(确保可以提取时间):
df['Time'] = pd.to_datetime(df['Time']) resampled_fd['Time'] = pd.to_datetime(resampled_fd['Time'])
- 提取时分秒作为新的匹配列:
df['time_part'] = df['Time'].dt.time resampled_fd['time_part'] = resampled_fd['Time'].dt.time
- 基于新列合并:
dfc = pd.merge(df, resampled_fd, on='time_part').drop('time_part', axis=1)
合并后会保留两个原Time列,可根据需要重命名或删除。
方向2:修正df的日期错误
如果df的日期是输入错误(本该是2021-12-11),直接修正日期部分:
df['Time'] = df['Time'].apply(lambda x: x.replace(year=2021, month=12, day=11)) # 再执行原合并代码 dfc = pd.merge(df, resampled_fd)
这样整列Time值就会有重叠,合并后得到正常结果。
内容的提问来源于stack exchange,提问作者Dub
相关产品推荐
相关产品推荐

