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

Pandas实现多行值复制填充至后续列的方法咨询

pandas实现方案

首先提供可复现的原始DataFrame构造代码:

import pandas as pd
import numpy as np

# 构造符合你描述的原始数据
df = pd.DataFrame([
    [1, 2, 3, np.nan, np.nan, np.nan],
    [4, 5, 6, np.nan, np.nan, np.nan]
], columns=['A', 'B', 'C', 'D', 'E', 'F'])

方案1:固定行数场景直接赋值(无转置,性能最优)

仅需两行代码即可完成,完全符合你「不转置仅复制值到对应列」的要求:

# 将第二行A-C列的值直接赋值给第一行D-F列
df.loc[0, ['D', 'E', 'F']] = df.loc[1, ['A', 'B', 'C']].values
# 提取第一行即为结果
result = df.head(1)

优势:逻辑直观,无额外计算开销,不需要修改数据结构。

方案2:通用多场景适配(行数、列分组规则可变也支持)

如果后续行数增加、或者每行列分组大小变化,可以用通用逻辑处理:

group_col_num = 3  # 每行对应填充的列数,此处是A-C共3列
for row_idx in range(1, len(df)):
    # 计算当前行要填充到第一行的起始列位置
    start_col_pos = row_idx * group_col_num
    # 按位置批量赋值
    df.loc[0, df.columns[start_col_pos:start_col_pos+group_col_num]] = df.loc[row_idx, df.columns[:group_col_num]].values
result = df.head(1)

优势:扩展性强,不需要手动写死列名,适配任意行数的同需求场景。

方案3:无侵入实现(不修改原始DataFrame)

如果需要保留原始数据完全不变,可以直接构造新的结果DataFrame:

result = pd.DataFrame([{
    'A': df.loc[0, 'A'],
    'B': df.loc[0, 'B'],
    'C': df.loc[0, 'C'],
    'D': df.loc[1, 'A'],
    'E': df.loc[1, 'B'],
    'F': df.loc[1, 'C']
}])

优势:完全不改动原始数据,避免误操作风险。

内容的提问来源于stack exchange,提问作者Asif Ahmed Neloy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:03