我有一个具有这个列名的数据帧。
timestamp,stockname,total volume traded每个时间段都有多个股票名称。
11:00,A,100
11:00,B,500
11:01,A,150
11:01,B,600
11:02,A,200
11:02,B,650我想创建一个ChangeInVol列,这样每个股票都有自己的差异,如
timestamp, stock,total volume, change in volume
11:00,A,100,NaN
11:00,B,500,NAN
11:01,A,150,50
11:01,B,600,100
11:02,A,200,50
11:03,B,650,50如果是一只股票,我就可以
df['ChangeVol'] = df['TotalVol'] - df['TotalVol'].shift(1)但是有很多种股票
发布于 2017-10-19 05:13:00
需要sort_values + DataFrameGroupBy.diff
#if columns not sorted
df = df.sort_values(['timestamp','stockname'])
df['change in volume'] = df.groupby('stockname')['total volume traded'].diff()
print (df)
timestamp stockname total volume traded change in volume
0 11:00 A 100 NaN
1 11:00 B 500 NaN
2 11:01 A 150 50.0
3 11:01 B 600 100.0
4 11:02 A 200 50.0
5 11:02 B 650 50.0https://stackoverflow.com/questions/46823175
复制相似问题