我有一个带有两个行的dataframe,我想添加另外一行,以显示两个行之间的差异。
data = [
(10, 20, 30, 40, 50, 60, 70),
(10, 30, 30, 40, 50, 60, 100)
]
df = pd.DataFrame(data, columns=["a", "b", "c", "d", "d", "f", "g"])
以下工作,但它增加了nan
的额外行
pd.concat([df, df.diff()])
a b c d d f g
0 10.0 20.0 30.0 40.0 50.0 60.0 70.0
1 10.0 30.0 30.0 40.0 50.0 60.0 100.0
0 NaN NaN NaN NaN NaN NaN NaN
1 0.0 10.0 0.0 0.0 0.0 0.0 30.0
分析解答
diff
总是会产生第一行NAN,只需将其放下:
out = pd.concat([df, df.diff().iloc[1:]])
输出:
a b c d d f g
0 10.0 20.0 30.0 40.0 50.0 60.0 70.0
1 10.0 30.0 30.0 40.0 50.0 60.0 100.0
1 0.0 10.0 0.0 0.0 0.0 0.0 30.0
如果您确实只有两个行,则可以进行铁码减法:
out = df.copy() # optional, you can also assign to df
out.loc['diff'] = df.iloc[1]-df.iloc[0]
输出:
a b c d d f g
0 10 20 30 40 50 60 70
1 10 30 30 40 50 60 100
diff 0 10 0 0 0 0 30