如何在Pandas DataFrame中随机复制指定行并插入原行下方
解决方案:在Pandas DataFrame中复制指定索引行并插入原行下方
你的现有代码仅单独重复了选中的行,没有保留原数据集的其他内容,也未实现将复制行紧邻原行插入的效果。以下是满足需求的可行方案:
实现步骤
- 随机选取目标行的索引
- 拆分原DataFrame为「选中行之前的部分」「选中行」「选中行副本」「选中行之后的部分」四个片段
- 按顺序拼接四个片段得到最终结果
- (可选)重置索引,避免出现重复索引的混乱情况
完整代码
import pandas as pd import random # 模拟你的datafile数据 datafile = pd.DataFrame([307,209,371,266,372,298,338,302,264,247], columns=[0]) # 随机选取目标索引 indexnumber = random.randrange(datafile.shape[0]) # 拆分数据片段 df_before = datafile.iloc[:indexnumber+1] # 包含原行的前半部分 df_duplicate = datafile.iloc[indexnumber:indexnumber+1] # 原行的副本 df_after = datafile.iloc[indexnumber+1:] # 原行之后的部分 # 拼接得到最终DataFrame newdf = pd.concat([df_before, df_duplicate, df_after], ignore_index=True) print(newdf)
效果示例
假设随机选中索引为1(对应值209),输出结果会是:
0 0 307 1 209 2 209 3 371 4 266 5 372 6 298 7 338 8 302 9 264 10 247
代码说明
df_before:截取原DataFrame从开头到选中索引(包含)的所有行df_duplicate:单独取出选中的行作为复制副本df_after:截取原DataFrame选中索引之后的所有行pd.concat:按顺序拼接三个片段,ignore_index=True用于重置索引,避免出现重复索引问题
内容的提问来源于stack exchange,提问作者Caledonian26
相关产品推荐
相关产品推荐

