亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在不同的 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 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號