Pandas DataFrame条件列生成问题:基于ColA与ColB创建ColC
解决Pandas DataFrame条件赋值问题
没问题,我来帮你搞定这个ColC列的条件赋值逻辑!根据你的需求,我们可以用两种简洁高效的方式实现:
方法1:用numpy.where直接映射条件
这是最直观的写法,一行代码就能完成逻辑判断:
import numpy as np # 完善你的代码:根据条件给ColC赋值 df_EVENT5_28['ColC'] = np.where( (df_EVENT5_28['colA'] == '') & (df_EVENT5_28['colB'] == 'CI'), 'Incomplete', 'Complete' )
方法2:先默认赋值再精准修改
如果你觉得分步操作更清晰,可以先给所有行设置默认值,再定位符合条件的行修改:
# 第一步:给所有行默认赋值为'Complete' df_EVENT5_28['ColC'] = 'Complete' # 第二步:定位满足「colA为空字符串且colB为'CI'」的行,修改ColC为'Incomplete' df_EVENT5_28.loc[(df_EVENT5_28['colA'] == '') & (df_EVENT5_28['colB'] == 'CI'), 'ColC'] = 'Incomplete'
注意事项:
- 这里必须用
&而不是and,因为Pandas的布尔序列需要用位运算符来组合多个条件 - 两种方法都是向量化操作,比
df.apply()逐行遍历的效率高很多,尤其适合处理大规模数据集
示例验证
假设你的原始DataFrame是这样的:
| colA | colB |
|---|---|
| CI | |
| abc | CI |
| AB | |
| xyz | XY |
运行代码后会得到预期结果:
| colA | colB | ColC |
|---|---|---|
| CI | Incomplete | |
| abc | CI | Complete |
| AB | Complete | |
| xyz | XY | Complete |
内容的提问来源于stack exchange,提问作者PineNuts0
相关产品推荐
相关产品推荐

