1

I have a two dataframe with identical index in both dataframes. I want to perform subtract operation. i.e., I want to subtract the all columns in df1 with respect to df2 column. where df2 has only one column.

Input:

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

I tried,

df1-df2['base']

Results,

    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

But Expected.

   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. Why I'am getting NaN and how two df's combined?

  2. How to get expected result?

Mohamed Thasin ah
  • 10,754
  • 11
  • 52
  • 111

1 Answers1

2

Use DataFrame.substract with argument axis=0

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

[out]

   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
Chris Adams
  • 18,389
  • 4
  • 22
  • 39