Python: несколько записей из одной и той же группы в разные столбцы. - PullRequest
0 голосов
/ 18 июня 2020

У меня есть датафреймы продуктов. Продукты выглядят так:

Cust_ID  Prod   Time_of_Sale
A        Bat      1 
A        Ball     2
A        Lego     3
B        Lego     3
B        Lego     9
B        Ball     11
B        Bat      11
B        Bat      13
C        Bat      2
C        Lego     2

Я хочу изменить его так, чтобы он стал таким:

Cust_ID  Bat   Bat  Ball Lego Lego
A        1     NaN  2    3    NaN
B        11    13   11   3    9  
C        2     NaN  NaN  2    NaN

Я играл с products.groupby(), и на самом деле это меня не ведет везде. Любая помощь приветствуется.

Цель состоит в том, чтобы «визуализировать» порядок, в котором каждый товар был приобретен каждым покупателем. У меня более 1000 уникальных клиентов.

Изменить: я вижу, что пользователь предложил мне go через Как развернуть фрейм данных . Но это не работает, потому что мои столбцы имеют повторяющиеся значения.

1 Ответ

1 голос
/ 18 июня 2020

Это немного сложно с дубликатами на Prod. В основном вам нужен cumcount и сводка:

new_df = (df.set_index(['Cust_ID','Prod',
                        df.groupby(['Cust_ID', 'Prod']).cumcount()])
     ['Time_of_Sale']
   .unstack(level=(1,2))
   .sort_index(axis=1)
)   
new_df.columns = [x for x,y in new_df.columns]
new_df = new_df.reset_index()

Вывод:

  Cust_ID  Ball   Bat   Bat  Lego  Lego
0       A   2.0   1.0   NaN   3.0   NaN
1       B  11.0  11.0  13.0   3.0   9.0
2       C   NaN   2.0   NaN   2.0   NaN

Примечание : повторяющиеся имена столбцов, хотя и поддерживаются, следует избегать в Pandas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...