How to divide two columns element-wise in a pandas dataframe
I have two columns in my pandas dataframe. I'd like to divide column A
by column B
, value by value, and show it as follows:
import pandas as pd
csv1 = pd.read_csv('auto$0$0.csv')
csv2 = pd.read_csv('auto$0$8.csv')
df1 = pd.DataFrame(csv1, columns=['Column A', 'Column B'])
df2 = pd.DataFrame(csv2, columns=['Column A', 'Column B'])
dfnew = pd.concat([df1, df2])
The columns:
Column A Column B
12 2
14 7
16 8
20 5
And the expected result:
Result
6
2
2
4
How do I do this?
Just divide the columns:
In [158]:
df['Result'] = df['Column A']/df['Column B']
df
Out[158]:
Column A Column B Result
0 12 2 6.0
1 14 7 2.0
2 16 8 2.0
3 20 5 4.0
Series.div()
Equivalent to the
/
operator but with support to substitute afill_value
for missing data in either one of the inputs.
So normally div()
is the same as /
:
df['C'] = df.A.div(df.B)
# df.A / df.B
But div()
's fill_value
is more concise than 2x fillna()
:
df['C'] = df.A.div(df.B, fill_value=-1)
# df.A.fillna(-1) / df.B.fillna(-1)
And div()
's method chaining is more idiomatic:
df['C'] = df.A.div(df.B).cumsum().add(1).gt(10)
# ((df.A / df.B).cumsum() + 1) > 10
Note that when dividing a DataFrame with another DataFrame or Series, DataFrame.div()
also supports broadcasting across an axis
or MultiIndex level
.