I have a pandas dataframe with 3 columns: source_name
, dest_address
, and fall_between
. I would like to group by the first 2 columns and create 2 new columns based off of the fall_between
column. This is what the df looks like:
df
source_name dest_address fall_between
0 source_1 72.21.215.90 False
1 source_1 72.21.215.90 False
2 source_1 72.21.215.90 False
3 source_1 72.21.215.90 False
4 source_1 131.107.0.89 False
5 source_1 131.107.0.89 False
6 source_2 69.63.191.1 False
7 source_2 69.63.191.1 True
8 source_2 69.63.191.1 True
9 source_2 69.63.191.1 True
10 source_2 69.63.191.1 True
Desired output:
df
source_name dest_address true_count false_count
0 source_1 72.21.215.90 0 4
1 source_1 131.107.0.89 0 2
2 source_2 69.63.191.1 4 1
I was using the following but I am not getting a count if it is 0. What is a better way to do this?
df[df['fall_between'] == True].groupby(['source_name','dest_address']).size().reset_index(name='true_count')
df[df['fall_between'] == False].groupby(['source_name','dest_address']).size().reset_index(name='false_count')