Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas: Update multiple rows using list

Tags:

python

pandas

I am trying to update pandas dataframe using list.

Dataframe with columns A, B, C

A B C
------
1 a F
2 b F
3 c F
4 d F
5 e F

I have 2 lists, one contains list of elements whose value needs to update from column B and second contains actual value to replace in column C.

Elements to update from column B names=['a', 'd', 'e'] Values to replace in column C values=['T', 'T', 'G']

Output after update

A B C
------
1 a T
2 b F
3 c F
4 d T
5 e G

How to update the dataframe?

like image 882
winter Avatar asked May 28 '26 14:05

winter


1 Answers

You can use boolean indexing combined with map:

names = ['a', 'd', 'e']
values = ['T', 'T', 'G']

m = df['B'].isin(names)
df.loc[m, 'C'] = df.loc[m, 'B'].map(dict(zip(names, values)))

Less efficient alternatives:

df['C'] = df['B'].map(dict(zip(names, values))).fillna(df['C'])

df['C'] = df['C'].mask(df['B'].isin(names), df['B'].map(dict(zip(names, values))))

Output:

   A  B  C
0  1  a  T
1  2  b  F
2  3  c  F
3  4  d  T
4  5  e  G
like image 77
mozway Avatar answered May 31 '26 04:05

mozway



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!