df=
id - val1
1 - 50
2 - 40
1 - 60
2 - 41
a = [50]
output = id - val1
1 - 50
1 - 60
假设我有一个类似df的panda数据帧和一个类似"a"的数组。现在,如果df列的val1列的任何值与此数组匹配,我希望返回唯一id的所有条目(如输出(。我该怎么做?
您可以将groupby.transform
与isin
和any
:一起使用
df[df.groupby('id')['val1'].transform(lambda x: x.isin(a).any())]
或者可替换地,嵌套的isin
:
df.loc[df['id'].isin(df.loc[df['val1'].isin(a), 'id'])]
[out]
id val1
0 1 50
2 1 60
您可以使用groupby的过滤器和任意过滤器来获得与匹配的唯一ID
a = [50]
df.groupby('id').filter(lambda x: x.val1.isin(a).any())
id val1
0 1 50
2 1 60