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

如何将pandas DataFrame的值提取后赋值给指定维度的多维numpy数组

报错原因

你将col1设置为DataFrame索引后,df1['col2'][x]的取值逻辑是匹配索引标签,而你的索引标签为["1", "2", "NaN", "NaN", "NaN", "NaN"],不存在数值为0的标签,因此触发KeyError。

最优实现方案

无需循环,直接提取列的numpy数组后调用reshape方法即可,代码如下:

import pandas as pd
import numpy as np
d = {'col1': [1, 2, 'NaN', 'NaN', 'NaN', 'NaN'], 'col2': [10, 20, 30, 40, 50 , 60]}

df1 = pd.DataFrame(data=d)
df1 = df1.set_index('col1')

firstDimensionOfTheArray = 3
secondDimensionOfTheArray = 2

# 一行完成转换
array = df1['col2'].values.reshape(firstDimensionOfTheArray, secondDimensionOfTheArray)

执行后得到的数组为:

[[10 20]
 [30 40]
 [50 60]]

完全符合需求。

原循环写法修复

如果你需要保留原来的循环实现逻辑,只需将取值改为按位置索引的iloc即可:

for i in range (0, firstDimensionOfTheArray):
    for j in range (0,  secondDimensionOfTheArray): 
        array [i, j] = df1 ['col2'].iloc[i * secondDimensionOfTheArray + j]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:24:08