Pandas:分时器频率不匹配

2024-04-26 02:58:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

df = pd.DataFrame({
'Buyer': 'Carl Mark Carl Joe Joe Carl'.split(),
'Quantity': [1,3,5,8,9,3],
'Date' : [
    DT.datetime(2013,9,1,13,0),
    DT.datetime(2013,9,1,13,5),
    DT.datetime(2013,10,1,20,0),
    DT.datetime(2013,10,3,10,0),
    DT.datetime(2013,12,2,12,0),                                      
    DT.datetime(2013,12,2,14,0),
    ]})

df = df.set_index('Date', drop=False)

具有以下功能:

^{pr2}$

我得到输出

                     Buyer                Date  Quantity  cum_sum
Date                                                                  
2013-09-01 13:00:00  Carl 2013-09-01 13:00:00         1       4
2013-09-01 13:05:00  Mark 2013-09-01 13:05:00         3       4    
2013-10-01 20:00:00  Carl 2013-10-01 20:00:00         5      25
2013-10-03 10:00:00  Joe  2013-10-03 10:00:00         8      25
2013-12-02 12:00:00  Joe  2013-12-02 12:00:00         9      25
2013-12-02 14:00:00  Carl 2013-12-02 14:00:00         3      25

为什么前两行的总和不是25?如果我在timegropper函数中使用'A'作为年度量词,前两行的cum_和计算正确吗?在

谢谢你

安迪


Tags: 数据dataframedfdatetimedatedtbuyerquantity
1条回答
网友
1楼 · 发布于 2024-04-26 02:58:54

您需要将closed='left'添加到时间分组器中,否则它将不包括第一个bin(因此它位于不同的组中), 顺便说一句…在你的函数中输入错误:cum_sum不是{}

(Pdb) df.groupby(TimeGrouper('20M',closed='left')).apply(f)
                    Buyer                Date  Quantity  cum_sum
Date                                                            
2013-09-01 13:00:00  Carl 2013-09-01 13:00:00         1       29
2013-09-01 13:05:00  Mark 2013-09-01 13:05:00         3       29
2013-10-01 20:00:00  Carl 2013-10-01 20:00:00         5       29
2013-10-03 10:00:00   Joe 2013-10-03 10:00:00         8       29
2013-12-02 12:00:00   Joe 2013-12-02 12:00:00         9       29
2013-12-02 14:00:00  Carl 2013-12-02 14:00:00         3       29

相关问题 更多 >