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

如何通过market_state列匹配,替换DataFrame中单行为预存多行数据?

问题描述

原始Pandas DataFrame:

time            market_state 
 5:00:00              open  
 6:00:00           continuous
 7:30:00           continuous
 9:12:00           unscheduled
 10:02:02          intraday 
 10:05:03          intraday 
 11:00:33          closed 

已完成操作:

  • 移除连续相同market_state的行,得到处理后DataFrame:
time            market_state 
 5:00:00             open  
 7:30:00           continuous
 9:12:00           unscheduled
 10:02:02          intraday 
 11:00:33          closed 
  • 提前存储了所有market_state为intraday的原始行:
store_intraday_market_state = df.loc[df['market_state'] == 'intraday']

存储结果:

time            market_state 
 10:02:02          intraday 
 10:05:03          intraday 

需求:通过market_state列匹配,将处理后DataFrame中的单条intraday行替换为预存的两行数据。


解决方案

可以通过拆分拼接的方式实现,具体代码如下:

方法一:定位索引后拆分拼接

import pandas as pd

# 假设处理后的DataFrame名为processed_df
# 找到处理后DataFrame中intraday行的索引
intraday_index = processed_df[processed_df['market_state'] == 'intraday'].index[0]

# 拆分原DataFrame并拼接预存数据
final_df = pd.concat([
    processed_df.loc[:intraday_index - 1],  # 取intraday行之前的所有数据
    store_intraday_market_state,            # 插入预存的两行intraday数据
    processed_df.loc[intraday_index + 1:]   # 取intraday行之后的所有数据
]).reset_index(drop=True)

方法二:先删除再插入

# 先移除处理后DataFrame中的intraday行
temp_df = processed_df[processed_df['market_state'] != 'intraday']
# 获取原intraday行的位置
insert_position = processed_df[processed_df['market_state'] == 'intraday'].index[0]
# 拼接得到最终结果
final_df = pd.concat([
    temp_df.iloc[:insert_position],
    store_intraday_market_state,
    temp_df.iloc[insert_position:]
]).reset_index(drop=True)

最终结果

执行后final_df的内容为:

time            market_state 
 5:00:00              open  
 7:30:00           continuous
 9:12:00           unscheduled
 10:02:02          intraday 
 10:05:03          intraday 
 11:00:33          closed 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:35:28