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

如何在Pandas中将指定行的列作为常量列添加到另一DataFrame并重命名

实现方法详解

这事儿其实不难,咱们可以用几种简洁的方式来完成需求,下面一步步来演示:

1. 先创建示例数据

首先咱们先把题目里的两个DataFrame用代码还原出来,方便后续操作:

import pandas as pd

# 题目里的单行源DataFrame
source_df = pd.DataFrame({'x': [1], 'p': [4], 'y': [2], 'q': [5], 'z': [3]})

# 目标DataFrame(添加列之前的状态)
target_df = pd.DataFrame({'A': [7, 9, 8], 'B': [8, 6, 5]})

2. 方法一:直接提取常量赋值(最直观)

因为源DataFrame只有一行,咱们可以直接提取x、y、z列的单个值,然后直接赋值给目标DataFrame的新列a、b、c——Pandas会自动把这个常量广播到所有行:

# 提取源DF里的常量值
a_val = source_df['x'].iloc[0]
b_val = source_df['y'].iloc[0]
c_val = source_df['z'].iloc[0]

# 给目标DF添加新列
target_df['a'] = a_val
target_df['b'] = b_val
target_df['c'] = c_val

3. 方法二:用assign()链式操作(更简洁)

如果喜欢更紧凑的代码风格,可以用Pandas的assign()方法,一次性完成所有新列的添加,还能保持链式调用的清爽:

target_df = target_df.assign(
    a=source_df['x'].iloc[0],
    b=source_df['y'].iloc[0],
    c=source_df['z'].iloc[0]
)

4. 方法三:批量提取重命名后合并(适合多列场景)

如果需要处理的列很多,不想一个个写赋值语句,可以先提取源DF的指定列、重命名,再通过广播合并到目标DF:

# 提取源DF的x/y/z列并重命名为a/b/c
const_columns = source_df[['x', 'y', 'z']].rename(columns={'x':'a', 'y':'b', 'z':'c'})

# 将单行的常量列重复目标DF的行数,再合并
target_df = pd.concat(
    [target_df, const_columns.loc[const_columns.index.repeat(len(target_df))].reset_index(drop=True)],
    axis=1
)

验证结果

不管用哪种方法,执行完后打印target_df,都会得到你想要的结果:

A  B  a  b  c
0  7  8  1  2  3
1  9  6  1  2  3
2  8  5  1  2  3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:40:13