【发布时间】:2019-08-22 05:41:05
【问题描述】:
我正在尝试使用 isin() 函数通过传入一个列表并与也包含列表的数据框列进行比较来过滤数据框。这是以下问题的扩展:
How to implement 'in' and 'not in' for Pandas dataframe
例如,现在每一行都包含一个国家列表,而不是每行一个国家/地区。
df = pd.DataFrame({'countries':[['US', 'UK'], ['UK'], ['Germany', 'France'], ['China']]})
为了过滤,我设置了两个单独的列表:
countries = ['UK','US']
countries_2 = ['UK']
预期结果应该相同,因为第 0 行和第 1 行都包含英国和/或美国
>>> df[df.countries.isin(countries)]
countries
0 US, UK
1 UK
>>> df[~df.countries.isin(countries_2)]
countries
0 US, UK
1 UK
然而 Python 抛出了以下错误
TypeError: unhashable type: 'list'
【问题讨论】:
-
您的数据框代码在语法上不正确
-
谢谢你,@jezrael 修复它