Python 数据帧分组与重组
我有一个关于将groupby()用于以下熊猫数据帧的简化示例的问题。我在这里试图实现的是,将每个“门店id”的每个“日期”的“金额”值相加,同时保留“每周天数”和“假日”列Python 数据帧分组与重组,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有一个关于将groupby()用于以下熊猫数据帧的简化示例的问题。我在这里试图实现的是,将每个“门店id”的每个“日期”的“金额”值相加,同时保留“每周天数”和“假日”列 store_id date amount days_of_week holiday 0 0 2017-11-14 100 1 0 1 0 2017-11-14 -100 1
store_id date amount days_of_week holiday
0 0 2017-11-14 100 1 0
1 0 2017-11-14 -100 1 0
2 1 2017-11-14 122 1 0
3 1 2017-11-19 55 6 1
4 2 2017-11-19 11 6 1
5 2 2017-11-19 32 6 1
因此,结果应该如下所示
store_id date amount days_of_week holiday
0 0 2017-11-14 0 1 0
1 1 2017-11-14 122 1 0
2 1 2017-11-19 55 6 1
3 2 2017-11-19 43 6 1
我已经尝试删除“每周的第几天”和“假日”列,然后使用groupby()获取到目前为止每个日期的总和。但这远远没有达到我想要的结果
train = train.drop(columns=['days_of_week', 'holiday'])
train.groupby(['store_id', 'date'])['amount'].sum()
是否有其他我不知道的方法可以轻松获得第二个示例表单?您可以通过使用panda聚合函数来实现这一点。看 以下代码应该适用于您的案例
df_sum = df.groupby(['date','store_id']).agg({'amount':'sum', 'days_of_week': 'first', 'holiday': 'first' }).reset_index()
print(df_sum)
date store_id amount days_of_week holiday
0 2017-11-14 0 0.0 1 0
1 2017-11-14 1 122.0 1 0
2 2017-11-19 1 55.0 6 1
3 2017-11-19 2 43.0 6 1