DataFrame子集修改值同步影响原表问题排查求助
问题解决:修改DataFrame子集时避免影响原数据
问题原因
你遇到的问题核心是:Pandas中用iloc切片得到的df_orig是原DataFrame的视图,而非独立副本。修改视图的内容会直接同步到原DataFrame里,导致后续循环切片时,会重复读取到已经被改成NaN的值。
解决方案
在截取子集时,通过.copy()方法显式创建原数据的独立副本,这样修改子集就不会影响原DataFrame了。
修改后的代码如下:
import pandas as pd import numpy as np df = pd.read_csv('df.csv') for j in range(num): start_time = j end_time = train_candles + j # 显式创建副本,断开与原df的关联 df_orig = df.iloc[start_time:end_time, :].copy() df_orig.iloc[-1, df_orig.columns.get_loc('last')] = np.nan
补充说明
.copy()默认是深拷贝,会完整复制数据和索引结构,确保子集完全独立于原数据。- 如果你的数据没有嵌套结构,也可以用
.copy(deep=False)做浅拷贝,但一般推荐默认的深拷贝,避免潜在的关联问题。
内容的提问来源于stack exchange,提问作者Davood Souri
相关产品推荐
相关产品推荐

