gpt4 book ai didi

Python - 时间序列对齐和 "to date"函数

转载 作者:太空狗 更新时间:2023-10-30 01:16:11 24 4
gpt4 key购买 nike

我有一个包含以下前三列的数据集。包括购物篮 ID(唯一标识符)、销售额(美元)和交易日期。我想为数据集的每一行计算以下列,我想在 Python 中进行。

同一篮子的

先前销售(如果有);当前购物篮的销售数量;当前篮子的均值(如果可用);当前篮子的最大截止日期(如果可用)

Basket  Sale   Date       PrevSale SaleCount MeanToDate MaxToDate
88 $15 3/01/2012 1
88 $30 11/02/2012 $15 2 $23 $30
88 $16 16/08/2012 $30 3 $20 $30
123 $90 18/06/2012 1
477 $77 19/08/2012 1
477 $57 11/12/2012 $77 2 $67 $77
566 $90 6/07/2012 1

我是 Python 的新手,我真的很难找到任何可以用奇特的方式来做的东西。我已经按 BasketID 和日期对数据(如上所述)进行了排序,因此我可以通过为每个篮子向前移动一个来批量获取之前的销售。除了循环之外,不知道如何以有效的方式获取 MeanToDate 和 MaxToDate ...有什么想法吗?

最佳答案

这应该可以解决问题:

from pandas import concat
from pandas.stats.moments import expanding_mean, expanding_count

def handler(grouped):
se = grouped.set_index('Date')['Sale'].sort_index()
# se is the (ordered) time series of sales restricted to a single basket
# we can now create a dataframe by combining different metrics
# pandas has a function for each of the ones you are interested in!
return concat(
{
'MeanToDate': expanding_mean(se), # cumulative mean
'MaxToDate': se.cummax(), # cumulative max
'SaleCount': expanding_count(se), # cumulative count
'Sale': se, # simple copy
'PrevSale': se.shift(1) # previous sale
},
axis=1
)

# we then apply this handler to all the groups and pandas combines them
# back into a single dataframe indexed by (Basket, Date)
# we simply need to reset the index to get the shape you mention in your question
new_df = df.groupby('Basket').apply(handler).reset_index()

您可以阅读更多关于分组/聚合的信息 here .

关于Python - 时间序列对齐和 "to date"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com