首页 > 解决方案 > 从数组列表创建数据框(不同的形状)

问题描述

我正在尝试将不同形状的数组列表转换为数据框。

import numpy as np
import pandas as pd

data = [np.array([[1, 2], [1, 3], [1, 1]]),
        np.array([[1, 2, 3], [3, 1, 2], [3, 2, 1]])]
names = ['A', 'B']

df = pd.DataFrame(data=data, columns=names)
df

但是,这给出了错误-

ValueError: Shape of passed values is (2, 1), indices imply (2, 2)

然后我尝试了-

df = pd.DataFrame(np.array([None, *data], dtype=object)[1:]).T
df

                          0                                  1
0  [[1, 2], [1, 3], [1, 1]]  [[1, 2, 3], [3, 1, 2], [3, 2, 1]]

这不是我想要的输出。

我希望每个内部列表作为单独的行,如下所示:

        A          B
0  [1, 2]  [1, 2, 3]
1  [1, 3]  [3, 1, 2]
2  [1, 1]  [3, 2, 1]

不知道如何进行。

标签: pythonarrayspandaslist

解决方案


尝试:

pd.DataFrame(dict((k,list(v)) for k,v in zip(names, data)))

输出:

        A          B
0  [1, 2]  [1, 2, 3]
1  [1, 3]  [3, 1, 2]
2  [1, 1]  [3, 2, 1]

推荐阅读