如何基于另一DataFrame的索引过滤Pandas DataFrame并生成结果?
基于DataFrame索引过滤行的实现方法
当然可以实现这个需求,以下是两种常用的pandas解决方案:
方法一:使用isin()配合布尔取反
先创建示例中的两个DataFrame:
import pandas as pd # 第一个DataFrame df1 = pd.DataFrame( {'C1': [1, 1, 0, 1], 'C2': [1, 1, 0, 1], 'C3': [1, 1, 0, 1], 'C4': [1, 1, 0, 1]}, index=['A', 'B', 'C', 'D'] ) # 第二个DataFrame df2 = pd.DataFrame( {'C1': [1, 1], 'C2': [1, 1], 'C3': [1, 1], 'C4': [1, 1]}, index=['A', 'C'] )
执行过滤操作:
# 保留df1中索引不在df2里的行 result_df = df1[~df1.index.isin(df2.index)]
输出结果:
C1 C2 C3 C4 B 1 1 1 1 D 1 1 1 1
方法二:使用drop()方法
直接删除df1中索引匹配df2的行,errors='ignore'参数可以避免因索引不存在引发的报错:
result_df = df1.drop(df2.index, errors='ignore')
该方法得到的结果和方法一完全一致。
内容的提问来源于stack exchange,提问作者Noorulain Islam
相关产品推荐
相关产品推荐

