簡體   English   中英

熊貓,根據另一列的值減去值

[英]Pandas, subtract values based on value of another column

在Pandas中,我試圖找出如何生成一列,該列是當前行的時間與最后一行的時間之間的差,其中另一列的值為True:

因此,鑒於數據幀:

df = pd.DataFrame({'Time':[5,10,15,20,25,30,35,40,45,50],
            'Event_Occured': [True,False,False,True,True,False,False,True,False,False]})

print df

  Event_Occured  Time
0          True     5
1         False    10
2         False    15
3          True    20
4          True    25
5         False    30
6         False    35
7          True    40
8         False    45
9         False    50

我正在嘗試生成看起來像這樣的列:

  Event_Occured  Time  Time_since_last
0          True     5                0
1         False    10                5
2         False    15               10
3          True    20                0
4          True    25                0
5         False    30                5
6         False    35               10
7          True    40                0
8         False    45                5
9         False    50               10

非常感謝!

使用df.Event_Occured.cumsum()可為groupby提供不同的組。 然后,每組應用一個從每個成員中減去第一個成員的值的函數,即可獲得所需的內容。

df['Time_since_last'] = \
    df.groupby(df.Event_Occured.cumsum()).Time.apply(lambda x: x - x.iloc[0])

df

在此處輸入圖片說明

這是一個替代方法,它使用最后一個有效觀察值來填充與False相對應的值:

df['Time'] - df.loc[df['Event_Occured'], 'Time'].reindex(df.index).ffill()
Out: 
0     0.0
1     5.0
2    10.0
3     0.0
4     0.0
5     5.0
6    10.0
7     0.0
8     5.0
9    10.0
Name: Time, dtype: float64

暫無
暫無

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

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