基于行名匹配两个DataFrame并过滤第二个数据集冗余行的技术咨询
基于行名匹配筛选DataFrame的解决方案
核心思路
以第一个DataFrame(记为df1)的行索引为基准,筛选第二个DataFrame(记为df2)中行名与df1完全匹配的行,自动剔除不匹配的冗余数据。
具体实现方法
方法1:直接用isin()+loc筛选(最简洁高效)
import pandas as pd # 假设df1是你的258行DataFrame,df2是268行DataFrame filtered_df2 = df2.loc[df2.index.isin(df1.index)]
这段代码会保留df2中所有行名存在于df1索引中的行,自动过滤掉冗余行。
方法2:用内连接实现匹配筛选
如果需要同时关联df1和匹配后的df2数据,可以使用内连接:
# 内连接仅保留双方行名匹配的行,结果包含df1和df2的所有列 joined_df = df1.join(df2, how='inner') # 若仅需提取df2的匹配行,筛选对应列即可 filtered_df2 = joined_df[df2.columns]
验证筛选结果
可以通过以下代码确认操作是否正确:
# 查看被剔除的冗余行名 dropped_indices = df2.index.difference(df1.index) print("被剔除的行名:", dropped_indices) # 检查筛选后df2的行数是否与df1一致 print("筛选后df2行数:", len(filtered_df2)) print("df1行数:", len(df1))
内容的提问来源于stack exchange,提问作者alnus meinata
相关产品推荐
相关产品推荐

