簡體   English   中英

減去數據幀值后恢復索引並附加零

[英]Restore index and append zeros after subtracting dataframe values

我正在計算不同滯后的數據幀值的差異。 以下數據框是我的輸入

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'))

請建議前進的方向。感謝您的時間。

我認為您需要按原始索引reindex索引:

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

另一種解決方案:

df_out= df.diff().fillna(0).astype(int)

或者將第一個零行附加到數組:

a1 = np.zeros((1, len(df.columns)), dtype=int)
arr = np.append(a1, df2.values, axis=0) - np.append(a1, df3.values, axis=0)
df_out = pd.DataFrame(arr, index=df.index)
print (df_out)
   0  1
0  0  0
1  2  2
2  2  2
3  2  2

您可以使用移位功能

(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM