pandas python中从 Dataframe 列表到数组的数组

68bkxrlz  于 2023-01-15  发布在  Python
关注(0)|答案(1)|浏览(220)

正如标题所说,我有一个名为"list"的列表,它包含多个Dataframe(形状为120x120),其中包含一些数字数据,这些数据是从以前的列表中添加的。

...
df_sum = list_dataframe[0]
    for i in range (1, len(list_dataframe)):
        df_sum = df_sum.add(list_dataframe[i])

    list.append(df_sum)

假设"list"包含800个 Dataframe ,因此该列表的每个索引都包含一个 Dataframe 。
1.创建一个长度与"list"相同的数组
1.获取"list"中的每个 Dataframe ,一个接一个,将其转换为Numpy数组(120 x 120,因此是一个矩阵)
1.将每个Numpy数组(120 x 120)添加到创建的数组(800)中。
所以我想得到一个数组(长度为800,与list相同),其中每个索引包含一个800 Numpy数组(矩阵)。
我已经使用. to_numpy()函数通过for循环应用于列表,

for i in range(len(list)):
    list[i] = list[i].to_numpy()

但它会生成一个奇怪的结构,比如 * an array of array of array *,其中第二个仅包含一个元素,即转换为数组的 Dataframe :

>>> list 

>>>[array([[0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        ...,
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.]]),
 array([[0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        [0., 0., 0., ..., 0., 0., 0.],
        ...,

我该怎么做呢?

jgzswidk

jgzswidk1#

你的思路是对的,如果你在结果列表中调用np.array,它将创建一个形状为(800, 120, 120)的大型数组,下面是一个使用列表解析而不是for循环的例子:

import numpy as np
import pandas as pd

my_list = [pd.DataFrame(np.random.randint(10, size=(120, 120))) for _ in range(800)]

out = np.array([df.to_numpy() for df in my_list])
>>> out.shape
(800, 120, 120)

相关问题