我有一个带有两个行的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