Как создать итоговый DF, используя данные из основного DF? - PullRequest
0 голосов
/ 05 июня 2018

Это небольшой фрагмент некоторых фиктивных данных, которые я использую - это форма того, что я называю «первичным» DF.У него есть несколько клиентских ключей, каждое из которых может иметь несколько устройств, которые могут получать доступ к Wi-Fi в течение нескольких дней.

Customer Account Key  Device Ref  Date        Data Used (mb)
ABC123                Dev1        03/06/2018  100
ABC123                Dev2        03/06/2018  500
ABC123                Dev3        03/06/2018  250
ABC123                Dev1        04/06/2018  600
ABC123                Dev2        04/06/2018  1000
ABC123                Dev3        04/06/2018  350

Я хотел бы обобщить эту дату во втором DF, и это будет выглядеть так

Customer_Account_Key Total_Devices Total_Days Total_Data_Used
ABC123               3             2          2800

До сих пор мне удалось создать второй DF, который имеет только одну строку для каждого из уникальных ключей учетной записи клиента

df_users['Customer Account Key'] = df_data['Customer Account Key'].unique()

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

Я играл с Groupby и df.loc, но я просто никуда не попал.Я новичок в Python, поэтому я не уверен, что это неправильный подход или я просто не правильно их использую.

Какие-нибудь указатели?

Спасибо

1 Ответ

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

Вы можете использовать функцию groupby + agg:

# aggregate data
df = df.groupby('Customer').agg({'Account_Key': {'Total_Devices':'nunique'},
                                 'Device_Ref_Date':{'Total_Days':'nunique'},
                                 'Data_Used':{'Total_Data_Used':'sum'}})

# remove multiindex column names
df.columns=df.columns.droplevel()
df = df.reset_index()

print(df)

   Customer  Account_Key  Device_Ref_Date  Data_Used
0   ABC123            3                2       2800
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...