Создать список значений для каждого ключа в пандах? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть CSV-файл, который выглядит примерно так, который я загрузил в кадр данных,

keycode, warehouse_id
      1,          WH1
      1,          WH2
      1,          WH1

Я хочу отобразить это на вывод, который выглядит как

keycode, warehouse_ids
      1,    [WH1, WH2]

Я не уверен, с чего начать в пандах?Я попытался использовать сводную таблицу, но агрегат, но не могу выбрать правильную агрегированную функцию.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018
Оператор

pandas 'groupby' используется для выполнения подобных действий.

Вы можете просто сделать:

df.groupby('keycode')['warehouse_id'].apply(list)

при условии, что 'df' - это имя вашего фрейма данных.

0 голосов
/ 13 ноября 2018

list(set(iterable))

df.groupby('keycode').warehouse_id.apply(lambda x: [*{*x}]).reset_index()

   keycode warehouse_id
0        1   [WH2, WH1]

drop_duplicates

df.drop_duplicates().groupby('keycode').warehouse_id.apply(list).reset_index()

   keycode warehouse_id
0        1   [WH1, WH2]
0 голосов
/ 13 ноября 2018

Использование groupby + unique:

df1 = df.groupby('keycode,')['warehouse_id'].unique().reset_index()

print(df1)
  keycode, warehouse_id
0       1,   [WH1, WH2]

Объяснение:

Обычно при использовании groupby с одним столбцом операций, как показано ниже, выдается Series с индексом groupby key, для этого мы используем reset_index для изменения index на column:

print(df.groupby('keycode,')['warehouse_id'].unique())
keycode,
1,    [WH1, WH2]
Name: warehouse_id, dtype: object

print(type(df.groupby('keycode,')['warehouse_id'].unique()))
<class 'pandas.core.series.Series'> 

print(df.groupby('keycode,')['warehouse_id'].unique().reset_index())
  keycode, warehouse_id
0       1,   [WH1, WH2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...