Skip to main content
 首页 » 编程设计

python之Pandas :如果日期时间索引中的日期不同,则将一列的值添加到另一列

2025年05月04日22qq号

我有一个像这样的 pandas dateframe,其中 datetime 列是索引:

                         volume  
2018-04-08 15:52:26.110     43    
2018-04-08 15:53:26.110     17   
2018-04-08 15:54:26.110     10   
2018-04-09 12:40:35.877     15   
2018-04-09 12:41:35.877     16   

我的要求是添加另一列 TotalVolume,它将以前的值相加,但仅当日期相同时。期望的输出:

                          volume  TotalVolume 
2018-04-08 15:52:26.110     43        43 
2018-04-08 15:53:26.110     17        57 (43+17) 
2018-04-08 15:54:26.110     10        67 (57+10) 
2018-04-09 12:40:35.877     15        15 
2018-04-09 12:41:35.877     16        31 (15+16) 

请您参考如下方法:

cumsum 和 pd.Grouper

这是完成此任务的通用方法,可用于任何频率类型:Min、Hour、Week、BM, 5H, ...

df.groupby(pd.Grouper(freq='D')).cumsum() 
 
                         volume 
2018-04-08 15:52:26.110      43 
2018-04-08 15:53:26.110      60 
2018-04-08 15:54:26.110      70 
2018-04-09 12:40:35.877      15 
2018-04-09 12:41:35.877      31 

df.assign(TotVol=df.groupby(pd.Grouper(freq='D')).cumsum()) 
 
                         volume  TotVol 
2018-04-08 15:52:26.110      43      43 
2018-04-08 15:53:26.110      17      60 
2018-04-08 15:54:26.110      10      70 
2018-04-09 12:40:35.877      15      15 
2018-04-09 12:41:35.877      16      31 

groupby 和 df.index.date

df.groupby(df.index.date).cumsum() 

df.assign(TotVol=df.groupby(df.index.date).cumsum())