python - Pandas DataFrame Groupby 和改革

标签 python pandas dataframe group-by

我有一个关于将 groupby() 与以下 pandas 数据框的简短示例一起使用的问题。我在这里想要实现的是在保留“days_of_week”和“holiday”列的同时,将每个“store_id”的每个“date”的“amount”值相加。

    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()

是否有其他我不知道的方法可以轻松获取第二个示例表单?

最佳答案

您可以使用 panda 聚合函数来实现这一点。见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

关于python - Pandas DataFrame Groupby 和改革,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014853/

相关文章:

python - 获取时间差不是给定单位的索引

python - 在 Pandas DataFrame 列中进行整数编码后将 dtype 保留为类别

python - 相等时返回不相等

python - 如何根据句号 '.' 在 python 中中断一个句子?

python - Django:查询设置多个条件或收集到新对象

python - Python Pandas 循环中的元组索引有问题吗?

Python pandas 按日期列表选择行

python - 如何从 Pandas DataFrame 中提取值,而不是 Series(不引用索引)?

python - Pandas 发现两列之间的累积差异

python - await 似乎阻塞了 asyncio.Future