我有一个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数组而不是列表中生成此错误?
答案 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]]