使用字典过滤 Pandas DataFrame

blu*_*oth 6 python pandas

我有一个包含多列的 Pandas 数据框,我想对其进行过滤以获取与不同列中的某些值匹配的子集。我使用了该isin()方法并传递了一个字典,但我不断收到TypeError消息TypeError: only list-like or dict-like objects are allowed to be passed to DataFrame.isin(), you passed a 'str'

以下是问题的示例:

x = pd.DataFrame({'surname':['wang','park','park'],'name':['tim','john','sam']})
display(x)

filt_dict = {'surname':'park'}

x[x.isin(filt_dict)]
Run Code Online (Sandbox Code Playgroud)

我期望surname匹配的两行park,但我得到了TypeError

是什么赋予了?

Rom*_*est 2

当您需要按字典值过滤时:

In [118]: x[x.surname.isin(filt_dict.values())]
Out[118]: 
  surname  name
1    park  john
2    park   sam
Run Code Online (Sandbox Code Playgroud)