Pandas:使用列表更新多行

lsmepo6l  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(114)

我正在尝试使用列表更新pandas数据框。

Dataframe with columns A, B, C

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

我有两个列表,一个包含需要从B列更新其值的元素列表,第二个包含要在C列中替换的实际值。
要从列B更新的元素names=['a',' d','e']要在列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

如何更新dataframe?

mwkjh3gx

mwkjh3gx1#

您可以将布尔索引与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)))

效率较低的替代品:

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))))

输出:

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

相关问题