Pandas DataFrame - PullRequest
       7

Pandas DataFrame

0 голосов
/ 01 августа 2020

У меня есть pandas DataFrame в табличной форме. Я пытаюсь отформатировать его в прикрепленном формате, но безуспешно. Я пробовал версии для l oop, но ничего не получается. Буду признателен за любую помощь.

PS: даты генерируются случайным образом, но показывают суть того, чего я пытаюсь достичь

Так выглядит DataFrame

Вот как я хочу, чтобы он выглядел

Ответы [ 2 ]

0 голосов
/ 01 августа 2020

Вместо создания нового столбца для каждой новой покупки, я думаю, лучше использовать один столбец и иметь инкрементное значение для последующей покупки для того же человека.

Использование фиктивных данных

import pandas as pd
df = pd.DataFrame({'Customer': ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd']
                      , 'Date_of_Purchase': ['10/02/2020', '27/01/2020', '27/04/2020', '26/03/2020', '21/02/2020',
                                             '07/06/2020', \
                                             '12/04/2020', '29/05/2020']})

Сначала отсортируйте клиентскую базу столбца по имени клиента:

df.sort_values(by=['Customer'], inplace=True)

Затем увеличьте количество покупок, используя приведенный ниже код:

df['n_purchase_times'] = df.groupby(['Customer']).cumcount() + 1

, что даст вам

  Customer Date_of_Purchase  n_purchase_times
0        a       10/02/2020                 1
4        a       21/02/2020                 2
1        b       27/01/2020                 1
5        b       07/06/2020                 2
2        c       27/04/2020                 1
6        c       12/04/2020                 2
3        d       26/03/2020                 1
7        d       29/05/2020                 2
0 голосов
/ 01 августа 2020

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

import pandas as pd

dfsrc = pd.DataFrame(columns=['customer', 'date'], index=None)
customer_list = ['a', 'b', 'c', 'a', 'c', 'd', 'a', 'b', 'c', 'd']
date_list = ['10/02/2020', '27/01/2020', '27/04/2020', '26/03/2020', '21/02/2020', '07/06/2020', '12/04/2020', '29/05/2020', '10/05/2020', '08/06/2020']
dfsrc.customer = customer_list
dfsrc.date = date_list

results = []
purchases = ['first_purchase', 'second_purchase', 'third_purchase']

for cust in dfsrc.customer.unique():
    rows = dfsrc[dfsrc.customer == cust].reset_index()
    cust_dict = {}
    cust_dict['customer'] = cust
    for idx, row in rows.iterrows():
        cust_dict[purchases[idx]] = row['date']
    results.append(cust_dict)

dfdest = pd.DataFrame(data=results, columns=['customer', 'first_purchase', 'second_purchase', 'third_purchase'])
dfdest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...