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

pandas如何逐行读取DataFrame并写入新DataFrame实现重复行拼接

问题分析

你原来的代码存在三个核心问题:

  1. pandas DataFrame 同时指定行和列索引不能直接写[i, 'D'],需要用.loc/.iloc属性,否则会把(i, 'D')当成一个新的列名处理
  2. 循环中直接给dataframe3['A']整列赋值长度为1的dataframe1['A'],只会给第一行赋值,其余行都会填充为NaN
  3. 手动循环拼接效率极低,pandas内置的广播、拼接方法完全可以实现需求,不需要手动写循环

正确实现

这里给两种最常用的实现方案,都可以直接得到预期结果:

方案1:广播赋值法(最简洁高效)

利用pandas的广播特性,单行的Series会自动填充到DataFrame的所有行:

import pandas as pd

# 直接复制df2的全部列数据
df3 = dataframe2.copy()
# 把df1的第一行赋值到新增的A/B/C列,自动重复填充所有行
df3[['A', 'B', 'C']] = dataframe1.iloc[0]
# 调整列顺序为你需要的A B C D E F
df3 = df3[['A', 'B', 'C', 'D', 'E', 'F']]

方案2:拼接法

先把df1的行重复到和df2行数一致,再横向拼接两个DataFrame:

import pandas as pd

# 将df1的单行重复到和df2行数一致,重置索引避免拼接出错
df1_repeated = dataframe1.loc[dataframe1.index.repeat(len(dataframe2))].reset_index(drop=True)
# 横向拼接两个DataFrame
df3 = pd.concat([df1_repeated, dataframe2], axis=1)

两种方案最终输出的df3都和你预期的结果完全一致。

内容的提问来源于stack exchange,提问作者zsh_18

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:39:05