2017-09-15 115 views
0

我有一个DataFrame,其中包含整数列'col1'。 DF可能有任何从100到100毫米的行。 如何计算在COL1如对值之间的差异:pandas DF列递归对之间的最大差异

2行 - ROW1 ROW3 - 2行 ROW4 - ROW3 等

,并返回最大的区别?

我知道如何使用禄,ILOC但不知道如何迫使它要经过对值,并移动到下一对

+2

'df ['col1']。diff()。max()'? – Zero

+0

我错过了配对......是的,约翰·加尔特说的是什么。 – piRSquared

+0

Arghh ....这是用于PYTHON语言的标签PYTHON有多难? –

回答

1
max(df[col_name].shift(-1)-df[col_name]) 

职能转变的需要下一行的值(或第二排,如果你换班(-2))。通过执行df [col_name] .shift(-1),您可以获取特定行,该行位于该行下方的行中。从df [col_name] .shift(-1)的值中抽取来自当前值的值会为每行提供行之间的差异。所以在一个数据框中,你最终会得到一系列行之间的差异。采取最大值,你会得到最大值。

Example below col_1 == Original column, col_2 == df[col_1].shift(-1) 


> col_1 | col_2 
> 123 | 456 
> 456| 999 
> 999| nan 

现在您只需从col_2减去col_1,取最大值并获得最大差值。

+0

请解释您的答案如何解决问题。 – Haris

+0

函数移位取下一行的值(或者如果执行移位(-2))则取第二行。通过执行df [col_name] .shift(-1),您可以获取特定行,该行位于该行下方的行中。从df [col_name] .shift(-1)的值中抽取来自当前值的值会为每行提供行之间的差异。所以在一个数据框中,你最终会得到一系列行之间的差异。采取最大值,你会得到最大值。 – 5nv

+0

这很好。如果你编辑你的答案并在那里添加这个解释,我认为它更好。 – Haris