【发布时间】:2020-08-10 19:07:11
【问题描述】:
我想在行中减去一个固定的行值,参考它们在另一列中的值。
我的数据如下所示:
TRACK TIME POSITION_X
0 1 0 12
1 1 30 13
2 1 60 15
3 1 90 11
4 2 0 10
5 2 20 11
6 2 60 13
7 2 90 17
我想参考 TRACK 列减去 POSITION_X 列的固定行值 (WHEN TIME=0),并使用这些值创建一个新列 ("NEW_POSX")。输出应该是这样的:
TRACK TIME POSITION_X NEW_POSX
0 1 0 12 0
1 1 30 13 1
2 1 60 15 3
3 1 90 11 -1
4 2 0 10 0
5 2 20 11 1
6 2 60 13 3
7 2 90 17 7
我一直在使用以下代码来完成这项工作:
import pandas as pd
data = {'TRACK': [1,1,1,1,2,2,2,2],
'TIME': [0,30,60,90,0,20,60,90],
'POSITION_X': [12,13,15,11,10,11,13,17],
}
df = pd.DataFrame (data, columns = ['TRACK','TIME','POSITION_X'])
df['NEW_POSX']= df.groupby('TRACK')['POSITION_X'].diff().fillna(0).astype(int)
df.head(8)
...但我没有得到想要的输出。相反,我得到一个新列,其中每一行都减去前一行(根据“TRACK”列):
TRACK TIME POSITION_X NEW_POSX
0 1 0 12 0
1 1 30 13 1
2 1 60 15 2
3 1 90 11 -4
4 2 0 10 0
5 2 20 11 1
6 2 60 13 2
7 2 90 17 4
谁能帮我解决这个问题?
【问题讨论】:
标签: python pandas group-by subtraction