用另一个数据帧序列减去一个数据帧

时间:2018-12-17 08:30:43

标签: python pandas

我有两个数据框,两个数据框的索引相同。我想执行减法运算。即,我想减去df1列中的df2中的所有列。 df2只有一列。

输入:

df1

   col1  col2  col3
0    10    34     6
1     3    23   123
2    23    45    23
3     5     1     5
4     1    45     6
5    65     6    88

df2

   base
0    12
1    43
2   435
3    76
4    23
5    12

我尝试过

df1-df2['base']

结果

    0   1   2   3   4   5  col1  col2  col3
0 NaN NaN NaN NaN NaN NaN   NaN   NaN   NaN
1 NaN NaN NaN NaN NaN NaN   NaN   NaN   NaN
2 NaN NaN NaN NaN NaN NaN   NaN   NaN   NaN
3 NaN NaN NaN NaN NaN NaN   NaN   NaN   NaN
4 NaN NaN NaN NaN NaN NaN   NaN   NaN   NaN
5 NaN NaN NaN NaN NaN NaN   NaN   NaN   NaN

但值得期待。

   col1  col2  col3
0    -2    22    -6
1   -40   -20    80
2  -412  -390  -412
3   -71   -75   -71
4   -22    22   -17
5    53    -6    76
  1. 为什么我会得到NaN以及两个df是如何合并的?

  2. 如何获得预期的结果?

1 个答案:

答案 0 :(得分:2)

DataFrame.substract与参数axis=0一起使用

df1.subtract(df2['base'], axis=0)

[出]

   col1  col2  col3
0    -2    22    -6
1   -40   -20    80
2  -412  -390  -412
3   -71   -75   -71
4   -22    22   -17
5    53    -6    76