6

我有一个包含一列的 DataFrame props,其中包含字符串列表。

理想情况下,我想按此列分组,但可以预见的是,当我这样做时会出现错误:

TypeError: unhashable type: 'list'

有没有一种明智的方法来重新排列我的 DataFrame 以便我可以使用这些值?

4

2 回答 2

12

您可以将字符串列表转换为字符串元组。元组是可散列的,因为它们是不可变的。这当然是假设您在创建后不需要添加到这些列表或从这些列表中删除。

于 2013-10-28T12:40:49.577 回答
5

您可以使用列表的不可变对应项,即元组

>>> import pandas as pd
>>> df = pd.DataFrame([[[1, 2], 'ab'], [[2, 3], 'bc']])
>>> df.groupby(0).groups
...
... TypeError: unhashable type: 'list'

您可以apply在适当的列上进行转换:

>>> df[0] = df[0].apply(tuple)
>>> df.groupby(0).groups
{(1, 2): [0], (2, 3): [1]}
于 2013-10-28T12:47:04.450 回答