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

如何将较长的NumPy数组适配到更宽但行数更少的Pandas DataFrame中

实现NumPy数组插入DataFrame并重复填充列的方案

没问题,我来帮你搞定这个需求!首先咱们先明确下原数据的细节:你定义的p其实默认把第一行当成了数据,所以第一步得先把它修正成你展示的带表头的结构,然后再处理数组b的插入和列填充。

步骤1:修正原DataFrame p的结构

你写的p创建代码会把["j","k","h"]当成第一行数据,所以我们需要先把这行设为列名,然后去掉这行数据:

import pandas as pd
import numpy as np

# 原定义
p = pd.DataFrame([["j","k","h"],[4,5,6],[7,8,9]])
# 修正表头
p.columns = p.iloc[0]
p = p[1:]

修正后的p结构就和你展示的一致了:

j  k  h
1  4  5  6
2  7  8  9

步骤2:处理NumPy数组b并生成目标DataFrame

我们需要把b的第一列放到p的第一列(j列),然后把b的第二列重复填充到p剩下的所有列(k和h列)。这里有两种简洁的实现方式:

方法一:用NumPy的数组拼接

利用np.tile重复第二列,再和第一列拼接:

# 定义数组b
b = np.array([["a",10],["b",20],["c",30],["d",40]])

# 提取b的第一列
first_col = b[:, 0]
# 把b的第二列重复(p的列数-1)次,转置后和第一列拼接
repeat_cols = np.tile(b[:, 1], (p.shape[1]-1, 1)).T
new_data = np.column_stack([first_col, repeat_cols])

# 创建目标DataFrame,用p的列名
result = pd.DataFrame(new_data, columns=p.columns)

方法二:用Pandas的字典构造

直接通过字典指定每一列的数据源,更直观:

# 把b转成临时DataFrame
b_df = pd.DataFrame(b, columns=['col0', 'col1'])

# 构造目标DataFrame:第一列用b的第一列,剩余列都用b的第二列
result = pd.DataFrame({
    p.columns[0]: b_df['col0'],
    **{col: b_df['col1'] for col in p.columns[1:]}
})

最终结果

运行任意一种方法后,result的结构就是你想要的:

j   k   h
0  a  10  10
1  b  20  20
2  c  30  30
3  d  40  40

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:52:52