gpt4 book ai didi

python - 错误 : unhashable type: 'list' . 使用 df.groupby.apply 时

转载 作者:行者123 更新时间:2023-12-04 13:44:04 28 4
gpt4 key购买 nike

这是我的数据框:

enter image description here

我想按 airline 对我的数据框进行排序然后在这个组内通过 tweet_created . airlinetweet_created是我的数据框中的两列。我试过以下

df.groupby(['airline']).apply(lambda x: x.sort_values(['tweet_created'])).reset_index(drop = True)

但是得到了这个错误:
unhashable type: 'list'

我不明白这里出了什么问题。有人能帮我吗?

最佳答案

从您的示例数据框中,看起来您的 airline系列包括 list对象。自 list是可变的且不可散列的,它不能用于分组操作。内部,GroupBy依赖于散列。

假设您的 airline 中的每个列表series 仅包含一个元素,您可以在分组前转换数据。一种方式是通过 itertools.chain .

from itertools import chain

df = pd.DataFrame({'airline': [['VirginAmerica'], ['united'], ['USAirways']]})

df['airline'] = list(chain.from_iterable(df['airline']))

print(df)

airline
0 VirginAmerica
1 united
2 USAirways

替代方法的一些性能基准测试:
# pandas v0.19.2, python 3.6.0

df = pd.concat([df]*1000, ignore_index=True)

%timeit list(chain.from_iterable(df['airline'])) # 228 µs per loop
%timeit np.concatenate(df['airline']) # 84.9 ms per loop
%timeit df['airline'].apply(pd.Series) # 817 ms per loop

关于python - 错误 : unhashable type: 'list' . 使用 df.groupby.apply 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52225301/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com