这是我正在使用的一些模拟数据的一个小提取 - 它形成了我称之为“主要”DF的形式。它有多个客户密钥,每个密钥可以有多个设备,可以在几天内访问wifi。
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的新手,所以我不确定这些是错误的方法,还是我没有正确使用它们。
任何指针?
由于
答案 0 :(得分:1)
您可以使用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