[英]Pandas filter rows based on values from 2 columns in another dataframe
假設我們有 2 個 dfs。
df1:
Product Name1 Name2
0 ABC aaa bbb
1 ASD sss ddd
2 ZCX xxx NaN
3 QWE qqq NaN
4 IOP iii ooo
df2:
Title Col1 Col2
0 aaaLKJ ... ...
1 zzzMNB ... ...
2 dddKJH ... ...
3 ooo123 ... ...
4 aaa098 ... ...
5 ttt676 ... ...
輸出 df 應包含所有 df2 行,其中“標題”以 df1 的“Name1”或“Name2”開頭。
Title Col1 Col2
0 aaaLKJ ... ...
2 dddKJH ... ...
3 ooo123 ... ...
4 aaa098 ... ...
請讓我知道如何實現這一點。 我已經嘗試了 df.loc、isin、str.contains 的幾種方法,但沒有運氣......
你可以建立從兩列中的所有名稱的列表df1
,並使用Series.str.startswith
在Title
中df2
,這還與一個tuple
字符串,找到那些在任何啟動項names
:
names = df1.filter(like='Name').stack().to_numpy()
# array(['aaa', 'bbb', 'sss', 'ddd', 'xxx', 'qqq', 'iii', 'ooo'], dtype=object)
df2 = df2[df2.Title.str.startswith(tuple(names))]
print(df2)
Title Col1 Col2
0 aaaLKJ ... ...
2 dddKJH ... ...
3 ooo123 ... ...
4 aaa098 ... ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.