簡體   English   中英

從Pandas列中的當前行值中減去前一行的值

[英]Subtract previous row value from the current row value in a Pandas column

我有一個pandas列,名稱為“ values”,其中包含各自的值10 15 36 95 99 我想從下一個值中減去每個值,以便獲得以下格式: 10 5 21 59 4

我試圖使用一個遍歷所有數據幀的for循環來解決此問題,但是這種方法很耗時。

for i in range(1,length_colulmn):
    df['value'].iloc[i] = df['value'].iloc[i]-df['value'].iloc[i-1]

數據框是否有一種直接的方法可以快速解決此問題? 我們期望的輸出如下:

['input']                                       
11
15
22
27
36
69
77

['output']                                        
11
4
7
5
9
33
8

pandas.Series.difffillna pandas.Series.diff使用:

import pandas as pd

s = pd.Series([11,15,22,27,36,69,77])
s.diff().fillna(s)

輸出:

0    11.0
1     4.0
2     7.0
3     5.0
4     9.0
5    33.0
6     8.0
dtype: float64

您可以使用pythonic shift函數。 看看我是怎么做到的。 讓我知道它是否有效。

代碼在這里:

import pandas as pd

df = pd.DataFrame({ 'input': [11, 15, 22, 27, 36, 69, 77]})

df['output']=df['input'] -df['input'].shift(1)

df
#df['output'].dropna()

說明:

  1. 創建數據框
  2. 創建列輸出,以便下一行減去當前行
  3. 打印數據框

結果:

    input   output
0   11  NaN
1   15  4.0
2   22  7.0
3   27  5.0
4   36  9.0
5   69  33.0
6   77  8.0

您可以使用dropna()刪除NaN

暫無
暫無

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

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