2016-08-19 98 views
0

用熊貓數據框做這件事的最好方法是什麼?我想遍歷一個數據幀,並計算當前值和下一個與當前值不同的值之間的差值。 例如: [13,13,13,14,13,12] 將創建與此 [-1,-1,-1,1,1]熊貓數據幀展望值

+0

爲什麼在12之後沒有值時有12個-1? – Psidom

+0

@Psidom你是對的,我糾正了它。最後一個可以是南或任何東西 –

回答

1

如何使用diff到一個新列計算差值,然後用下一個非零值回填0:

import pandas as pd 
import numpy as np 
df = pd.DataFrame({"S": [13, 13, 13, 14, 13, 12]}) 

df.S.diff(-1).replace(0, np.nan).bfill() # replace zero with nan and apply back fill. 

# 0 -1 
# 1 -1 
# 2 -1 
# 3  1 
# 4  1 
# 5 NaN 
# Name: S, dtype: float64 
+0

我在搞清楚你在做什麼,但哇這真的很酷。謝謝。 –

+0

如果我想用2個循環做舊的時尚方式,該怎麼辦。我如何編寫2個循環。我只想知道熊貓數據幀的語法,而不是實際邏輯的優化 –

+0

順便說一句,這真的很聰明 –