如何基于列当前值及另外两列值重写Pandas列映射?
Pandas DataFrame 条件映射处理
原始数据
先构造示例DataFrame:
import pandas as pd import numpy as np df = pd.DataFrame({ 'is_and_mp': ["'100'", "'400'", "'100'", "'400'"], 'market_state': [None, None, 'ALGO', 'OPENING'], 'reason': [np.nan, np.nan, np.nan, np.nan] })
需求说明
当满足以下所有条件时,将market_state字段替换为CONTINUOUS_TRADING:
is_and_mp取值为'100'或'400'market_state为Nonereason为NaN
同时保证其他不符合条件的行不被修改。
解决方案
使用loc结合布尔条件精准定位并修改目标行:
# 组合判断条件 condition = (df['is_and_mp'].isin(["'100'", "'400'"])) & \ (df['market_state'].isna()) & \ (df['reason'].isna()) # 仅对符合条件的行修改market_state df.loc[condition, 'market_state'] = 'CONTINUOUS_TRADING'
处理结果
执行代码后,DataFrame变为:
is_and_mp market_state reason 0 '100' CONTINUOUS_TRADING NaN 1 '400' CONTINUOUS_TRADING NaN 2 '100' ALGO NaN 3 '400' OPENING NaN
内容的提问来源于stack exchange,提问作者user19667022
相关产品推荐
相关产品推荐

