Python Pandas比较两个DataFrame 仅保留公共索引行并分别返回
解决方案
你可以通过取两个DataFrame索引的交集,再分别筛选数据实现需求,完整代码如下:
import pandas as pd # 若DATETIME还不是索引,先执行这一步将其设为索引 df1 = df1.set_index('DATETIME') df2 = df2.set_index('DATETIME') # 计算两个索引的公共部分,即两边都存在的时间戳 common_index = df1.index.intersection(df2.index) # 用公共索引分别筛选两个DataFrame,reset_index可将DATETIME恢复为普通列 filtered_df1 = df1.loc[common_index].reset_index() filtered_df2 = df2.loc[common_index].reset_index()
代码说明
- 筛选后的两个DataFrame的时间戳完全匹配,顺序也保持一致
- 如果你需要保留DATETIME为索引,去掉末尾的
reset_index()即可 - 该方法对时间精度为秒、毫秒等不同粒度的时间戳索引都适用
内容的提问来源于stack exchange,提问作者Wing Shum
相关产品推荐
相关产品推荐

