如何使用If条件对DataFrame的列值进行条件替换
解决方案
以下基于Python pandas库实现需求,提供两种常用可行方案:
方案1:使用numpy.where(写法最简洁)
该方法逻辑完全对应你描述的IF判断规则,一行代码即可完成替换:
import pandas as pd import numpy as np # 此处df为你已构造好的DataFrame对象 df['Name'] = np.where(df['Flag_Name'] == 1, df['New_Name'], df['Name'])
np.where的三个参数依次为:判断条件、条件满足时的返回值、条件不满足时的返回值,和需求逻辑完全匹配。
方案2:使用pandas原生loc索引(无需引入numpy依赖)
如果你不想额外依赖numpy库,可以用pandas自带的条件索引实现,仅修改符合要求的行:
# 仅筛选Flag_Name等于1的行,将对应行的Name列替换为New_Name列的值 df.loc[df['Flag_Name'] == 1, 'Name'] = df.loc[df['Flag_Name'] == 1, 'New_Name']
注意:如果你的
Flag_Name列存储的是字符串类型的数值,需要将判断条件中的1修改为'1',避免数据类型不匹配导致判断失效。
运行上述任意一种方案后,最终得到的DataFrame结果如下:
| Name | New_Name | Flag_Name |
|---|---|---|
| Nike | Nike | 1 |
| Adidas | Adidas | 1 |
| Microsoft | Microsoft | 0 |
| Apple | Apple | 1 |
内容的提问来源于stack exchange,提问作者ReneFrbg
相关产品推荐
相关产品推荐

