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

cro*_*bot 3 python python-3.x pandas

我有一个Pandas DataFrame值(浮点数)和国家名称字符串("UNITED STATES","UNITED KINGDOM"等).我想根据国家总结价值观:

Data['Values'].groupby(Data['Country']).sum()
Run Code Online (Sandbox Code Playgroud)

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

TypeError: 'Series' objects are mutable, thus they cannot be hashed
Run Code Online (Sandbox Code Playgroud)

此外,如果我尝试将由国家/地区组成的系列独一无二:

Data['Country'].unique()
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed
Run Code Online (Sandbox Code Playgroud)

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

ari*_*ari 8

有时像列表(或本例中的系列)这样的可变类型可以潜入您的不可变对象集合中.

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

Data.Country = Data.Country.apply(str)
Data.groupby('Country').Values.sum()
Run Code Online (Sandbox Code Playgroud)

请注意,这可能导致字符串不符合您的预期; 例如str(['Canada'])- > "['Canada']"所以str(['Canada']) == 'Canada'会产生False.我建议做Data.Country.unique()并且至少进行视觉检查以确保一切看起来都应该如此.

  • 非常正确.我在国家/地区字符串列表中有一个Series对象.不要像我一样结束,孩子们. (4认同)