我有一个时间序列数据,其中包含特定时间的符号及其各自的值。
index,symbol,value
01:00,A,10
01:00,B,15
01:01,A,15
01:01,B,25
01:02,A,30
01:02,B,45
现在我想创建一个第 4 列,它具有每个交易品种基于时间序列的累积值,但是从每个累积行中,每个交易品种的第一行值将分别减去
index,symbol,value,adjustedCumulativeSum
01:00,A,10,0
01:00,B,15,0
01:01,A,15,15
01:01,B,25,25
01:02,A,30,45
01:02,B,45,70
我知道如何做正常的累加和
df = df.reset_index().sort_values(['index','symbol'])
df['cumlativesum'] = df.groupby('symbol')['value'].cumsum()
df = df.set_index('index')
但是我是否要从所有累计总和中扣除第 0 行的值?
使用groupby
带有自定义函数 cumsum
并减去 iat
选择的第一个值:
df['adjustedCumulativeSum']=df.groupby('symbol')['value'].apply(lambda x:x.cumsum()-x.iat[0])
print (df)
index symbol value adjustedCumulativeSum
0 01:00 A 10 0
1 01:00 B 15 0
2 01:01 A 15 15
3 01:01 B 25 25
4 01:02 A 30 45
5 01:02 B 45 70
我是一名优秀的程序员,十分优秀!