![](/img/trans.png)
[英]how to subtract previous row value from current row value based on condition in pandas DataFrame?
[英]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.diff
與fillna
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()
說明:
結果:
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.