2016-08-19 93 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

顺便说一句,这真的很聪明 –