首页 > 解决方案 > Pandas 使用元组和通配符进行过滤

问题描述

有没有办法将 pandasisin方法与元组和通配符一起使用?

在下面的示例中,有没有办法out通过[True, False, True]重写代码和使用通配符搜索来实现 tuple [1,None]

df     = pd.DataFrame({'ID':[1,2,3], 'Age':[60,3,5]})
dfDict = pd.DataFrame({'ID':[1,3],   'Age':[None,5]})
display(df, dfDict)

tup  = [tuple(x) for x in dfDict.values]
out = df.apply(tuple, 1).isin(tup).values.tolist()
print(out)

在此处输入图像描述

标签: pythonpandas

解决方案


在您的示例中,只需检查ID如下:

lst  = dfDict.ID.values.tolist()
out = df.ID.isin(lst).values.tolist()

print(out)
[True, False, True]

df检查您的值是否存在的另一种方法dfDict是使用mergepandas 中的方法并在进行连接时询问,indicator如下所示:

merged = pd.merge(df, dfDict[['ID']], on=['ID'], how='left', indicator=True)

print(merged)
   ID  Age     _merge
0   1   60       both
1   2    3  left_only
2   3    5       both

这回答了你的问题了吗?


推荐阅读