ошибка: нечитаемый тип: 'список'. При использовании df.groupby.apply - PullRequest
0 голосов
/ 07 сентября 2018

Вот мой фрейм данных:

enter image description here

Я хочу отсортировать мой фрейм данных по airline, а затем в этой группе поtweet_created.airline и tweet_created - это два столбца в моем фрейме данных.Я попытался выполнить следующие действия:

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

Но получил эту ошибку:

unhashable type: 'list'

Я не понимаю, что здесь происходит не так.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 07 сентября 2018

Из вашего образца данных кажется, что ваша серия airline состоит из list объектов. Так как list является изменяемым и не хэшируемым, его нельзя использовать для группировки операций. Внутренне GroupBy зависит от хеширования.

Предполагая, что каждый список в вашей серии airline состоит только из одного элемента, вы можете преобразовать свои данные перед группировкой. Один путь через 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...