Pandas如何基于日期时间索引与catcode_id列合并两个DataFrame
Pandas 按索引+普通列联合匹配合并DataFrame
你需要的是内连接合并,仅保留两个表中date(日期索引)和catcode_id(普通列)同时匹配的行,整合两个表的所有字段,直接用pd.merge即可实现。
实现代码
写法1:直接指定索引作为连接键
不需要改动原表结构,直接指定左右表的索引参与匹配,代码最简洁:
merged_result = pd.merge( df1, df2, left_index=True, right_index=True, on="catcode_id", how="inner" )
写法2:重置索引后统一按列匹配
如果不习惯混合指定索引和列作为匹配键,可以先把date索引转成普通列,合并完成后再重新设为索引,逻辑更直观:
merged_result = pd.merge( df1.reset_index(), df2.reset_index(), on=["date", "catcode_id"], how="inner" ).set_index("date")
结果验证
运行上述任意一种写法,得到的结果和你给出的预期输出完全一致:
catcode_id type feccandid_amt amount disposition feccandid_disp bills date 2007-12-31 A0000 24K H6TX08100 1000 support S4HI00011 1
注:样例中
z9600条目未出现在结果里,是因为df1中该条目的date是1997-12-31,df2中同catcode_id的条目date是2007-12-31,日期不匹配,会被内连接逻辑自动过滤。
内容的提问来源于stack exchange,提问作者ferrelwill
相关产品推荐
相关产品推荐

