如何基于DateTime索引忽略秒数合并两个空气污染数据DataFrame
基于DateTime索引忽略秒数的DataFrame合并实现
你之前的实现问题在于手动拆分拼接日期时间字段容易出现格式匹配错误,且没有利用DateTime索引自带的时间处理能力,直接通过时间精度截断即可快速实现分钟粒度的匹配合并。
核心实现代码
步骤1:生成分钟粒度的合并键
使用dt.floor('min')方法直接将DateTime索引的秒、毫秒部分置零,得到分钟级别的统一合并键:
# 两个DataFrame的索引均为DateTime类型,直接基于索引生成合并键 df5['merge_min'] = df5.index.floor('min') dfS['merge_min'] = dfS.index.floor('min')
步骤2:合并并处理最终索引
基于生成的分钟粒度键合并,直接设置合并后的索引,无需手动拼接字符串处理格式:
# 按需选择合并方式,how参数可选inner/left/right/outer,默认取两表的交集用inner dfG = df5.merge(dfS, on='merge_min', how='inner') # 将合并键设置为最终索引,重命名为需要的索引名 dfG = dfG.set_index('merge_min') dfG.index.name = 'DATETIME' # 导出csv dfG.to_csv('dfG.csv')
可选扩展:保留原始索引
如果需要保留两个表的原始秒级时间索引,可在生成合并键前先将索引转为普通列:
# 分别重命名原始索引避免合并后重名冲突 df5 = df5.rename_axis('origin_datetime_df5').reset_index() dfS = dfS.rename_axis('origin_datetime_dfS').reset_index() # 再执行上述生成合并键、合并的流程即可
内容的提问来源于stack exchange,提问作者Sedi
相关产品推荐
相关产品推荐

