Here is one way using df.pivot_table()
:
Replace any other party except Bharatiya Janata Party
as Others
using np.where()
and then use pivot_table)
, finally get sum()
across axis=1
for sum of votes.
df1=(df.assign(party=np.where(df.party.ne('Bharatiya Janata Party'),'Others',df.party)).
pivot_table(index='state',columns='party',values='votes',aggfunc='sum'))
df1=df1.assign(Total=df1.sum(axis=1)).reset_index().rename_axis(None,axis=1)
Output: (Note: I had added dummy Andhra Pradesh
rows for testing)
state Bharatiya Janata Party Others Total
0 Andaman & Nicobar Islands 90969 90954 181923
1 Andhra Pradesh 100 85 185