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

如何按行每隔n个位置合并两个DataFrame,将DataFrame1插入为每第三行

可以实现,以下是基于Python pandas的具体实现方案:

实现逻辑

  • 先调整DataFrame1的结构,匹配DataFrame2的列名和字段规则
  • 对DataFrame2按间隔n行拆分成分组,为每个分组分配唯一组号
  • 为DataFrame1的每行分配与DataFrame2分组对应的组号
  • 逐组合并DataFrame2的分组数据和对应组号的DataFrame1行,拼接所有分组得到最终结果

可运行代码

import pandas as pd

# 构造示例DataFrame1
df1 = pd.DataFrame({
    "INDEX": ["1.", "2.", "3."],
    "MATHS": ["Student1", "Student2", "Student3"],
    "SCORE": [44, 35, 36]
})
# 调整df1结构匹配df2的列
df1_processed = pd.DataFrame({
    "INDEX": ["3."]*len(df1),
    "SUBJECT": ["Maths"]*len(df1),
    "SCORE": df1["SCORE"]
})

# 构造示例DataFrame2(补充了目标输出中的最后一组数据)
df2 = pd.DataFrame({
    "INDEX": ["1.", "2.", "1.", "2.", "1.", "2."],
    "SUBJECT": ["English", "Science", "English", "Science", "English", "Science"],
    "SCORE": [50, 37, 36, 44, 47, 30]
})

n = 2 # 每隔n行插入1条df1数据
# 给df2分配组号,每n行一组
df2['group'] = df2.index // n
# 给处理后的df1分配相同的组号
df1_processed['group'] = df1_processed.index

# 逐组合并后拼接所有组
result = pd.concat(
    [pd.concat([group_df, df1_processed[df1_processed['group'] == g]], ignore_index=True) 
     for g, group_df in df2.groupby('group')],
    ignore_index=True
).drop('group', axis=1)

print(result)

效果说明

运行后输出的result和需求中的目标输出完全一致,若需要调整间隔行数,只要修改参数n的取值即可,注意保持DataFrame1的行数和DataFrame2按n行拆分后的总组数一致即可。

内容的提问来源于stack exchange,提问作者Prateeksha Dawn Davidson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 06:06:08