TypeError:'Series'对象是可变的,因此它们不能用列散列问题

时间:2018-05-21 14:06:49

标签: python pandas

我的数据框列有问题,但我不明白为什么我的列cat出现问题。enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

您的系列包含其他pd.Series个对象。这是不好的做法。通常,您应确保系列具有固定类型,以便您无需明确检查type即可执行操作。

您的错误是由于pd.Series个对象无法清除。一种解决方法是使用函数将pd.Series个对象转换为可散列类型,例如tuple

s = pd.Series(['one string', 'another string', pd.Series([1, 2, 3])])

def converter(x):
    if isinstance(x, pd.Series):
        return tuple(x.values)
    else:
        return x

res = s.apply(converter).unique()

print(res)

['one string' 'another string' (1, 2, 3)]