使用Pandas计算大型数据帧中第n个值和第n-1个值之间差异的python方法?

使用Pandas计算大型数据帧中第n个值和第n-1个值之间差异的python方法?,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设我有一个100x100的数据帧,完全由数值组成 我想做的是得到第n行和第n-1行中每列的差异: 假设第一列有值(1,2,3,4…..100)。我想要的是输出(1,1,1,1,1,1,1…..1)。它将从第二行减去第一行,从第三行减去第二行,等等 我使用for循环完成了这项工作,其中它循环遍历每一列,然后遍历每一行。但我想知道是否有更优雅的解决方案 这是我认为会起作用的,因为种种原因,我还没有机会尝试它 outputframe = pd.DataFrame(data=0, index = li

假设我有一个100x100的数据帧,完全由数值组成

我想做的是得到第n行和第n-1行中每列的差异:

假设第一列有值(1,2,3,4…..100)。我想要的是输出(1,1,1,1,1,1,1…..1)。它将从第二行减去第一行,从第三行减去第二行,等等

我使用for循环完成了这项工作,其中它循环遍历每一列,然后遍历每一行。但我想知道是否有更优雅的解决方案

这是我认为会起作用的,因为种种原因,我还没有机会尝试它

outputframe = pd.DataFrame(data=0, index = list(range(1,99)), column = list(range(1,100))
For i in range(0,100):
    For x in range(1,100):
       outputframe.iloc[x,i]= df.iloc[x,i]-df[x-1,i]

我相信这会给我正确的结果,但是,我想知道是否有更优雅的解决方案

这里的关键是pandas
shift(n)
方法,它允许您将索引按
n
行移动

将熊猫作为pd导入
将numpy作为np导入
df=pd.DataFrame(np.random.randint(0100,size=(100100)))
df_new=df.shift(-1)-df

像@ALollz所说的那样,
.diff()
在这里工作得又快又好。 第一排将得到南,所以我再次重新分配第一排

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(100, 100)))
df_new = df.diff()
df_new.iloc[0] = df.iloc[0]
原始数据帧

在.diff()之后(第一行为NaN)

df\u new.iloc[0]=df.iloc[0]


在这种情况下,您应该简单地查看pandas shiftOr
.diff()
宾果。我知道一定有更好的方法,如此优雅。非常感谢。