减去数据帧值后恢复索引并追加零

时间:2018-12-06 07:46:07

标签: python pandas dataframe

我正在计算不同滞后下数据帧值的差异。 以下数据框是我的输入

df = pd.DataFrame([[1, 2], [3, 4],[5,6],[7,8]], columns=list('AB'))

要计算最后三行和前三行之间的差异,我正在执行以下操作。

df2=df.iloc[1:,:]

df3=df.iloc[:-1,:] 

df_out=pd.DataFrame(df2.values-df3.values,index=df2.index)

计算与预期的一样,但我想在该行中保留带有零的索引0。

df_expected_out=pd.DataFrame([[0,0], [2,2],[2,2],[2,2]], columns=list('AB'))

请提出前进的方向。感谢您的时间。

2 个答案:

答案 0 :(得分:1)

我认为您需要按原始索引reindex

readyState

另一种解决方案:

* {font-size: 14;
}

或将第一个零行附加到数组:

df_out=pd.DataFrame(df2.values-df3.values,index=df2.index).reindex(df.index, fill_value=0)
print (df_out)
   0  1
0  0  0
1  2  2
2  2  2
3  2  2

答案 1 :(得分:0)

您可以使用shift函数

(df - df.shift()).fillna(0)
Out[9]: 
     A    B
0  0.0  0.0
1  2.0  2.0
2  2.0  2.0
3  2.0  2.0