You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame符合条件的首/后续实例映射不同trade_type值

问题

我正在处理一个名为market_info_df的Pandas DataFrame,包含trade_type、issue_status、market_phase、trading_state四列。需要为trade_type应用如下映射逻辑:

  • 当issue_status=='10'、market_phase=='0'且trading_state==' '时,第一个满足该条件的实例的trade_type设为OPENING_AUCTION
  • 其余符合上述条件的实例,trade_type设为INTRADAY_AUCTION

我尝试了以下代码,但无法正确实现逻辑:

market_info_df.loc[market_info_df['issue_status' == '10', 'market_phase' == '0', 'trading_state' == '  ']].iloc[0] = OPENING_AUCTION

market_info_df.loc[market_info_df['issue_status' == '10', 'market_phase' == '0', 'trading_state' == '  ']].iloc[1:] = INTRADAY_AUCTION

预期效果示例:

row  issue_status  market_phase  trading_state                  trade_type
 0        20           0              '  '         ->        CONTINUOUS_AUCTION
 1        10           0              '  '         ->        OPENING_AUCTION
 2        20           0              '  '         ->       CONTINUOUS_AUCTION
 3        10           0              '  '         ->       INTRADAY_AUCTION
 4        10           0              '  '         ->       INTRADAY_AUCTION
 5        10           0              '  '         ->       INTRADAY_AUCTION
解决方案

你的代码核心问题是布尔索引写法错误,同时直接修改切片会触发SettingWithCopyWarning,以下是正确实现步骤:

  1. 构造正确的筛选条件并获取匹配行索引
    先准确定位所有满足三个条件的行:

    # 构造布尔条件
    condition = (market_info_df['issue_status'] == '10') & \
                (market_info_df['market_phase'] == '0') & \
                (market_info_df['trading_state'] == '  ')
    # 获取符合条件的行索引
    matching_indices = market_info_df[condition].index
    
  2. 设置第一个匹配行的trade_type
    若存在符合条件的行,将第一行标记为开盘集合竞价:

    if len(matching_indices) > 0:
        market_info_df.loc[matching_indices[0], 'trade_type'] = 'OPENING_AUCTION'
    
  3. 设置剩余匹配行的trade_type
    对剩下的符合条件行,标记为盘中集合竞价:

    if len(matching_indices) > 1:
        market_info_df.loc[matching_indices[1:], 'trade_type'] = 'INTRADAY_AUCTION'
    

通过以上步骤,可精准实现需求:仅第一个满足三条件的行被设为OPENING_AUCTION,其余同条件行设为INTRADAY_AUCTION,不满足条件的行保持原有trade_type不变。

内容的提问来源于stack exchange,提问作者user19667022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:50:33