Home > Enterprise >  Pandas where function
Pandas where function

Time:12-08

I'm using Pandas where function trying to find the percentage in each state

filter1 = df['state']=='California'
filter2 = df['state']=='Texas'
filter3 = df['state']=='Florida'

df['percentage']= df['total'].where(filter1)/df['total'].where(filter1).sum()

The output is

Year    state         total    percentage
2014    California  914198.0    0.134925
2014    Florida     766441.0    NaN
2014    Texas      1045274.0    NaN
2015    California  874642.0    0.129087
2015    Florida     878760.0    NaN

how do I apply the rest of 2 filters into there too?

CodePudding user response:

You can try out df.loc[(filter1) & (filter2) & (filter3)] in pandas to apply multiple filter together !

CodePudding user response:

Don't use where but groupby.transform:

df['percentage'] = df['total'].div(df.groupby('state')['total'].transform('sum'))

Output:

   Year       state      total  percentage
0  2014  California   914198.0    0.511056
1  2014     Florida   766441.0    0.465865
2  2014       Texas  1045274.0    1.000000
3  2015  California   874642.0    0.488944
4  2015     Florida   878760.0    0.534135
  • Related