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

如何将Pandas DataFrame中元组转为数组或直接生成含数组的DataFrame

问题背景

我有一个Pandas DataFrame,每行的条目是包含20个数值的元组,是通过以下代码生成的:

DataFrame = pd.DataFrame({'windows20_energy_x': array_passed}, dtype=float)

尝试改成下面的写法,想直接存入数组时出现报错:

DataFrame = pd.DataFrame({'windows20_energy_x': [array_passed]}, dtype=float)

错误信息:

AssertionError: Number of Block dimensions (4) must equal number of axes (2)

其中array_passed为:

import numpy as np

array_passed = [
    np.array([0.403, 0.153, 0.052, 0.299, 0.141, 0.056, 0.041, 0.019, 0.009,
              0.067, 0.05 , 0.022, 0.014, 0.054, 0.007, 0.007, 0.002, 0.009,
              0.003, 0.005]),
    np.array([0.277, 0.054, 0.101, 0.378, 0.066, 0.056, 0.047, 0.02 , 0.007,
              0.057, 0.036, 0.022, 0.024, 0.045, 0.006, 0.008, 0.007, 0.007,
              0.003, 0.002]),
    np.array([0.859, 1.905, 0.808, 9.338, 9.02 , 15.852, 2.491, 5.449,
              4.896, 5.937, 3.969, 3.397, 2.666, 0.429, 0.348, 0.458,
              0.527, 0.55 , 0.234, 0.174]),
    np.array([0.489, 0.105, 0.089, 0.464, 0.145, 0.043, 0.035, 0.008, 0.012,
              0.03 , 0.046, 0.019, 0.017, 0.194, 0.005, 0.014, 0.013, 0.009,
              0.007, 0.005])
]

疑问

  1. 是否可以将DataFrame中的元组转为数组?
  2. 是否有其他方法直接生成每行包含数组的DataFrame?

解答

问题1:可以将元组转为数组

直接使用apply方法结合np.array,就能把列中的元组转回numpy数组:

import pandas as pd
import numpy as np

# 假设已生成的DataFrame名为df
df['windows20_energy_x'] = df['windows20_energy_x'].apply(np.array)

执行后,用type(df.iloc[0, 0])验证,会返回numpy.ndarray,说明转换成功。

问题2:直接生成每行含数组的DataFrame

你之前的错误是因为把array_passed整个套进了列表,导致Pandas识别出维度不匹配。以下几种方法可以直接生成目标DataFrame:

方法1:直接传入array_passed(需后续转换)

这就是你最开始的写法,Pandas会默认把数组转成元组存储,之后再用问题1的方法转回数组即可:

df = pd.DataFrame({'windows20_energy_x': array_passed}, dtype=float)

方法2:指定Series的dtype为object

先将array_passed转为object类型的Series,再生成DataFrame,这样单元格会直接存储numpy数组,无需后续转换:

s = pd.Series(array_passed, dtype='object')
df = pd.DataFrame({'windows20_energy_x': s})

方法3:显式遍历生成列表

通过列表推导式确保每个元素都是数组,再传入DataFrame:

df = pd.DataFrame({'windows20_energy_x': [arr for arr in array_passed]}, dtype='object')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:03:19