Как создать сводную DF, используя данные из первичного DF?

Chris спросил: 12 мая 2018 в 04:41 в: python

Это небольшой отрывок из некоторых макетных данных, которые я использую - это форма, которую я называю "первичной" 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 ответ

Есть решение
YOLO ответил: 12 мая 2018 в 05:12

Вы можете использовать функцию 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
Chris ответил: 12 мая 2018 в 05:23
Спасибо огромное! Проводили так долго, пытаясь разобраться в этом, и это решило это. Теперь я знаю, что я могу приспособить его и другими способами.