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

时间:2018-09-11 04:40:53

标签: python pandas numpy

我有一个像这样的大熊猫日期框架,其中datetime列是index:

                         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)

2 个答案:

答案 0 :(得分:3)

cumsumpd.Grouper

这是完成此任务的通用方法,可用于任何频率类型:MinHourWeekBM5H ,...

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

groupbydf.index.date

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

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

答案 1 :(得分:2)

您可以按日期对数据框进行分组,列的总和将起作用

df.index = pd.to_datetime(df.index)
df.groupby(df.index.date)['volume'].cumsum()