我有一份清单,如下所示:
x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
labels = [1,0]
df = pd.DataFrame({"a":x,"labels":labels})
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-458-79198b72cdcb> in <module>()
1 x = np.array([[1, 2, 3], [4, 5, 6]], np.int32).reshape(-1,1)
2 labels = [1,0,1,0]
----> 3 df = pd.DataFrame({"a":x,"labels":labels})
4 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/construction.py in sanitize_array(data, index, dtype, copy, raise_cast_failure)
480 elif subarr.ndim > 1:
481 if isinstance(data, np.ndarray):
--> 482 raise Exception("Data must be 1-dimensional")
483 else:
484 subarr = com.asarray_tuplesafe(data, dtype=dtype)
Exception: Data must be 1-dimensional
我试图通过x.reshape(-1,1)
来重塑np.ndarray,但结果没有改变。ndarray x中的每个列表必须是数据帧中的一行。我希望得到:
a labels
0 [1, 2, 3] 1
1 [4, 5, 6] 0
问题是,由于
a
是一个多维的、同质的数组,pandas不知道如何将拆分为几行。一般来说,熊猫不支持嵌入式结构。 考虑一下高维数组为(3,4,2)
的情况,应该如何处理请注意,dataframe列是通过单独调用
pd.Series
构造函数创建的。通过直接尝试从ndarray构造一个序列,我们得到了相同的显式错误:因此,您必须将数组转换为一个iterable,其中它的每个值都是数据帧的行。 为此,您可以将numpy数组的值解压缩到单独的列表中:
相关问题 更多 >
编程相关推荐