为了账号安全,请及时绑定邮箱和手机立即绑定

在不同的 DataFrame 上使用 DataFrame 过滤器

在不同的 DataFrame 上使用 DataFrame 过滤器

喵喵时光机 2022-06-07 19:09:59
我有两个数据框:df1:ID var11 Foo2 Foo3 Foo4 Bardf2:ID var12 Foo3 Bar4 Bar5 Foo    6 Bar我为 df1 创建了一个过滤器,其中 var1 = 'Foo':foo_filter=df1['var1']=='Foo'当应用于 df1 时正确返回:df1_filtered=df1[foo_filter]print(df1_filtered)ID var11  Foo2  Foo3  Foo然后我想对 df2 应用相同的过滤器,输出如下:print(df2_filtered)ID var12  Foo3  Bar但是我遇到了这个错误:df2_filtered=df2[foo_filter]IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match有什么办法可以用过滤器做到这一点,还是我需要不同的方法?
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

只有你需要:


如果 ID 是索引,则将 ID 作为列:


df1.reset_index(inplace=True) #if ID is the index

df2.reset_index(inplace=True) #if ID is the index

filtered_df1=df1[df1['var1'].eq('Foo')]

print(filtered_df1)


    ID var1

0   1  Foo

1   2  Foo

2   3  Foo

df2.loc[df2['ID'].isin(filtered_df1['ID'])]


   ID var1

0   2  Foo

1   3  Bar


查看完整回答
反对 回复 2022-06-07
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

df1 = pd.DataFrame({"id":[1,2,3,4], "var1":['Foo', 'Foo', 'Foo', 'Bar']})

df2 = pd.DataFrame({"id":[2,3,4,5, 6], "var1":['Foo','Bar','Bar','Foo', 'Bar']})


def filter(x):

    return x == 'Foo'


df1[df1['var1'].apply(filter)]

    id  var1

0   1   Foo

1   2   Foo

2   3   Foo




df2[df2['var1'].apply(filter)]

    id  var1

0   2   Foo

3   5   Foo


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号