我有一张大桌子,里面有销售数据.每一行都包含几个销售信息,但对于我们的讨论,它包含一个日期时间列和一个销售值.
我一直在try 使用Grouper按5分钟频率的时间序列对销售额进行分组.
import pandas as pd
import datetime
data = pd.DataFrame({
'date' : [datetime.datetime(2022,11,1,0,10,0), datetime.datetime(2022,11,1,0,25,0),datetime.datetime(2022,11,1,0,35,0)],
'gmv' : [10,20,40]})
df = data.groupby([pd.Grouper(key='date', freq='5Min', origin='start_day', convention = 'start', dropna = False, sort=True, closed = 'left')]).aggregate({'gmv' :'sum'}).reset_index()
df["cum_sale"]=df.groupby([df['date'].dt.date])['gmv'].cumsum(axis=0)
但是,尽管我要求5分钟的频率,第一个结果是延迟10分钟.我知道前5分钟没有任何交易,但一个怎么可能"强迫"它存在呢?
有没有更好的方法来组织这样的数据?在打开它的日累计销售额后,我正在绘制它,但上面的"10分钟"偏移量打破了我的图表.
Update for futher questions个
这是我的源表VALUE_COUNTS()
我正在try 应用建议的答案
tdf = teste[['data', 'marca','gmv']]
tdf = tdf.astype({'marca':'str'}) #("marca" was a category type)
dti = pd.date_range(tdf['data'].min().normalize(), tdf['data'].max(), freq='5min', name='data')
df = tdf.set_index('data').reindex(dti, fill_value=0).reset_index()
df['cum_sale'] = df.resample('D', on='data')['gmv'].cumsum()
df
但现在我的桌子几乎空空如也.