如何根据DataFrame的CLAUSE列条件替换matu列对应行的值
实现方案
你可以直接用numpy的where函数一行完成需求逻辑,判断CLAUSE为YES时用WEIGHTEDRT的值填充matu,否则保留matu原始值:
import pandas as pd import numpy as np # 示例数据构造 df = pd.DataFrame({ 'windcodes': ['163197.SH', '154563.SH', '789645.IB', '1880260.IB'], 'name': ['shangguo comp', 'guosheng comp', 'guoyou comp', 'shagui comp'], 'matu': [2.9248, 2.886, None, None], 'CLAUSE': ['NO', 'YES', 'YES', 'YES'], 'WEIGHTEDRT': [2.582, 2.773, 3.098, 2.657] }) # 核心处理逻辑 df['matu'] = np.where(df['CLAUSE'] == 'YES', df['WEIGHTEDRT'], df['matu'])
如果你不想引入numpy依赖,也可以用pandas原生的loc条件赋值实现:
# 原生pandas实现,无需额外依赖 df.loc[df['CLAUSE'] == 'YES', 'matu'] = df['WEIGHTEDRT']
运行后得到的结果和预期完全一致:
| windcodes | name | matu | CLAUSE | WEIGHTEDRT |
|---|---|---|---|---|
| 163197.SH | shangguo comp | 2.9248 | NO | 2.582 |
| 154563.SH | guosheng comp | 2.773 | YES | 2.773 |
| 789645.IB | guoyou comp | 3.098 | YES | 3.098 |
| 1880260.IB | shagui comp | 2.657 | YES | 2.657 |
内容的提问来源于stack exchange,提问作者Danyu Li
相关产品推荐
相关产品推荐

