基于Pandas根据指定条件生成新列result的实现方法
Pandas实现条件生成新列方案
针对你需要根据Runid和type两列的条件生成result列的需求,这里有几种实用的实现方式:
方法一:使用numpy.where(推荐,性能更优)
这种方法适合处理多条件判断,代码简洁且运行速度快,尤其是数据量较大时表现出色:
import pandas as pd import numpy as np # 假设你的数据集存储在名为df的DataFrame中 df['result'] = np.where( (df['Runid'] == 'R1') & (df['type'] == 1.5), 'pass', np.where( (df['Runid'] == 'R2') & (df['type'] == 1), 'fail', None # 不符合上述两个条件时的默认值,可按需修改为''、'NA'等 ) )
方法二:使用DataFrame.loc赋值(逻辑更直观)
这种方式分步设置条件,可读性强,后续要添加更多规则时也更容易扩展:
import pandas as pd # 先初始化result列为默认值(这里用None,你可以换成其他值) df['result'] = None # 第一个条件:当Runid='R1'且type=1.5时,result设为'pass' df.loc[(df['Runid'] == 'R1') & (df['type'] == 1.5), 'result'] = 'pass' # 第二个条件:当Runid='R2'且type=1时,result设为'fail' df.loc[(df['Runid'] == 'R2') & (df['type'] == 1), 'result'] = 'fail'
小提示
- 如果你的数据集里还有其他需要匹配的条件,可以继续嵌套
np.where或者追加loc语句。 - 避免使用
apply自定义函数处理这类简单条件,因为它的运行效率远低于上面两种方法,数据量大时差异会很明显。
内容的提问来源于stack exchange,提问作者Mohammed shariq
相关产品推荐
相关产品推荐

