Группа данных Pandas группируется в список, со списком в ячейках данных - PullRequest
0 голосов
/ 27 июня 2018

Рассмотрим этот ввод df

my_input_df = pd.DataFrame({
'export_services': [[1],[2,4,5],[4,6], [2,4,5],[1]], 
'seaport':['china','africa','europe', 'mexico','europe'], 
'price_of_fish':['100','200','250','125','75']})

Как сгруппировать столбец, содержащий списки, и объединить остальные столбцы в список?

my_output_df = pd.DataFrame({
'export_services': [[1],[2,4,5],[4,6]], 
'seaport':[['china','europe'],['africa','mexico'],'europe'], 
'price_of_fish':[['100','75'],'200',['250','125']]})

Я пробовал с

my_input_df.groupby('export_services').apply(list)

, что дает

TypeError: unhashable тип: 'list'

Есть идеи?

Примечания: Это нормально, если все сгруппированные строки в my_output_df являются списками, даже для одной записи.

1 Ответ

0 голосов
/ 27 июня 2018

Сначала преобразуйте в tuple, который можно хэшировать:

df.export_services = df.export_services.apply(tuple)

groupby с agg

df.groupby('export_services').agg(list).reset_index()

  export_services           seaport price_of_fish
0            (1,)   [china, europe]     [100, 75]
1       (2, 4, 5)  [africa, mexico]    [200, 125]
2          (4, 6)          [europe]         [250]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...