Python groupby 错误,'unhashable' 系列对象

Python groupby error, 'unhashable' Series object

我有一个包含值(浮点数)和国家/地区名称字符串("UNITED STATES"、"UNITED KINGDOM" 等)的 Pandas DataFrame。我想根据国家对值求和:

Data['Values'].groupby(Data['Country']).sum()

不幸的是,我收到以下错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed

此外,如果我尝试区分由以下国家/地区组成的系列:

Data['Country'].unique()

我得到同样的错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed

为什么会出现这个错误?是关于国名的吗?任何帮助将不胜感激。我正在使用 Python 3.4 和 Pandas 0.15.2.

有时像列表(在这种情况下是系列)这样的可变类型可能会潜入您的不可变对象集合中。

您可以使用 apply 强制所有对象不可变。尝试

Data.Country = Data.Country.apply(str)
Data.groupby('Country').Values.sum()

请注意,这可能导致字符串不是您预期的那样;例如str(['Canada']) -> "['Canada']" 所以 str(['Canada']) == 'Canada' 将产生 False。我建议 Data.Country.unique() 并至少进行目视检查以确保一切看起来都正常。