![](/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.