![](/img/trans.png)
[英]Populate values in a dataframe based on matching row and column of another dataframe
[英]Filter a dataframe based on values matching/containing in particular column in another dataframe
我有一個 df1,其中包含一個名為 Id 的列,而另一個 df2 具有一個名為 Test_Ids_flow 的列,其中包含許多 Id(一些包含在 df1 中,一些不包含)。 我只需要過濾掉 df2 中包含 df1 中的 Id 的那些行。
df = pd.DataFrame({'Id':["42","75","36","12"],
'Name':['Apple','Strawberry','Banana','Pear']})
df2 = pd.DataFrame({'Test_Ids_Flow':["42,4,6,10","4,8,3,9","4,8,5,75","1,6,12,90","5,36,10,94","6,4,3,60","18,25,65,72"]})
您可以嘗試使用pd.DataFrame.str.split(',')
獲取 id 列表,然后使用pd.Series.isin
和pd.Series.any()
檢查列表是否包含至少一個元素df.Id
的:
mask=df2['Test_Ids_Flow'].str.split(',').apply(lambda x: df.Id.isin(x).any())
#Same as: mask=[df.Id.isin(l).any() for l in df2['Test_Ids_Flow'].str.split(',')]
df2[mask]
如同:
df2[df2.Test_Ids_Flow.str.split(',', expand=True).isin(df.Id.tolist()).any(1)]
Output:
Test_Ids_Flow
0 42,4,6,10
2 4,8,5,75
3 1,6,12,90
4 5,36,10,94
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.