如何按行每隔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
相关产品推荐
相关产品推荐

