假设我有一个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
行移动索引。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 100)))
df_new = df.shift(-1) - df