我正在计算不同滞后下数据帧值的差异。 以下数据框是我的输入
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'))
请提出前进的方向。感谢您的时间。
答案 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