簡體   English   中英

參考 pandas dataframe 中的列值減去固定行值

[英]Subtract fixed row value in reference to column value in pandas dataframe

我想參考它們在另一列中的值,減去行中的固定行值。

我的數據如下所示:

       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”)。 output 應該是這樣的:

       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)

...但我沒有得到想要的 output。 相反,我得到一個新列,其中每一行都減去前一行(根據“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

誰能幫我這個?

您可以使用transform and first獲取時間 0 的值,然后將其減去'POSITION_X'列:

s=df.groupby('TRACK')['POSITION_X'].transform('first')
df['NEW_POSX']=df['POSITION_X']-s

#Same as: 
#df['NEW_POSX']=df['POSITION_X'].sub(s)

Output:

df
   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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM