如何利用一个DataFrame的ID索引对另一个DataFrame进行切片?
解决方案:基于另一个DataFrame的ID筛选行
这是Pandas里非常常见的筛选场景,我给你分享几个简单高效的实现方法,根据你的df1结构不同可以灵活选择:
方法一:使用isin()方法(最直观)
这是最常用的方式,直接判断df2的ID是否存在于df1的ID集合中:
情况1:df1的ID是独立列
如果df1是一个包含ID列的DataFrame(就像你给出的结构展示的那样),直接用列匹配:
import pandas as pd # 假设df1和df2已经创建完成 filtered_df = df2[df2['ID'].isin(df1['ID'])]
情况2:df1的ID是索引
如果df1的ID其实是它的行索引(比如你展示的df1结构里,loc1等是索引,ID是索引名),那需要先提取索引列表再匹配:
filtered_df = df2[df2['ID'].isin(df1.index)]
方法二:使用merge()内连接
如果后续你还需要关联两个DataFrame的其他数据,用内连接的方式更合适,自动保留两边共同存在的ID行:
情况1:df1的ID是列
filtered_df = pd.merge(df2, df1, on='ID', how='inner')
情况2:df1的ID是索引
filtered_df = pd.merge(df2, df1, left_on='ID', right_index=True, how='inner')
效果验证
用你给出的示例数据,处理后filtered_df会只保留ID为loc1、loc2、loc3、loc6、loc9的行,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Alex Trevylan
相关产品推荐
相关产品推荐

