我有一个包含多列的 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。
是什么赋予了?
当您需要按字典值过滤时:
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)