Python 数据帧分组与重组

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

我有一个关于将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               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