无法将3D数组转换为数据框python

时间:2018-08-31 05:13:44

标签: python

我有一个3d列表

l=[ [ [1,"ab",119.0] ] ,  [ [2,"cd",129.0] ] ,  [ [ 3,"ef",139.0] ] ]

代码

 import pandas as pd , numpy as np
 l=[ [ [1,"ab",119.0] ] , [ [2,"cd",129.0] ] , [ [ 3,"ef",139.0] ] ]
 b=np.array(l)
 print(pd.DataFrame(l))
 print(pd.DataFrame(b))

可以将该列表转换为数据帧。但是,当我将此列表转换为数组,然后将数组转换为数据帧时,我得到的值是Error-必须通过2d input。为什么在numpy数组而不是列表中生成此错误?

1 个答案:

答案 0 :(得分:2)

当您将l传递给pd.DataFrame构造函数时,它会将l读取为对象列表,从而返回一个数据框,其中的一列由{{1}中的列表组成}:

l

0 0 [1, ab, 119.0] 1 [2, cd, 129.0] 2 [3, ef, 139.0] 转换为l时,将获得3d数组(3、1、1):

np.array

[ [ ['1' 'ab' '119.0'] ], [ ['2' 'cd' '129.0'] ], [ ['3' 'ef' '139.0'] ] ] 无法将此3d数组转换为2d数据帧,从而导致错误。

如果您实际上这样输入列表

pandas

传递列表或数组应该没有问题。您将获得以下数据框:

l = [[1, "ab", 119.0], [2, "cd", 129.0], [3, "ef", 139.0]]