我正在从事与数据科学相关的项目,我已经达到需要对数据帧行进行某种切片复制的地步。
假设以下内容:
store_df = pd.read_csv(...)
我有一个函数process(df : pd.DataFrame)
,该函数通过删除和添加某些列来修改dataFrame df
。
由于store_df
很大,并且在处理process()
时需要花费时间,因此我尝试创建要在process
中进行每次处理后存储的批处理。
train_df = pd.DataFrame()
for bn in range(0, store_df.shape[0], batch_num):
train_holder_df = store_df.iloc[bn:(bn + batch_num - 1), :].copy()
process(train_holder_df)
train_df.concat(train_holder_df)
鉴于process()
的行为,下一个批次无法处理,因为对store_df
的修改是在第一批次中完成的。这使我相信,在train_df = store_df.iloc[bn:(batch_num - 1), :].copy()
这部分中,我收到的是视图而不是副本。有什么我想念的吗?
PS:我是通过手机写这个问题的,所以...如果事情看起来很怪异,抱歉!