Из вашего образца данных кажется, что ваша серия 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