熊猫DataFrame Groupby和改革

地狱密码

我对以下简短的pandas数据框示例使用groupby()有疑问。我在这里想要实现的是在保留“ days_of_week”和“ holiday”列的同时,为每个“ store_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

我试过删除'day_of_week'和'holiday'列,然后使用groupby()获取到目前为止每个日期的总和。但这远没有达到我想要的结果形式。

train = train.drop(columns=['days_of_week', 'holiday'])
train.groupby(['store_id', 'date'])['amount'].sum()

我还不知道有其他方法可以轻松获取第二个示例表格吗?

t龙

您可以使用熊猫聚合函数来实现。参见https://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.agg.html

以下代码适用于您的情况

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章