如何将字典大列表转换为数据帧/矩阵

2024-04-25 09:11:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份词典清单,大约有500万行。
列表如下:

[{"a":100, "b":50},{"c":2,"a":10}]

我想要的是这样的数据帧或矩阵:

^{pr2}$

然后我将它输入到一个集群算法中。在

当列表不大时,pd.DataFrame(list)可以正常工作。但是名单 我记不清了。在

我试图将列表转换成spase矩阵,但在执行kmeans时仍然会出现内存错误。在

那么有没有办法从列表中创建一个巨大的矩阵,例如逐行写入硬盘?在这种情况下,我可以从硬盘上逐行读取这个巨大的矩阵,然后进行kmeans。在

非常感谢


Tags: 数据内存算法dataframe列表集群矩阵list
2条回答

如果列表不适合内存,可以逐块循环查看列表(完全公开:我不知道这个解决方案有多慢/多快):

import pandas as pd
tmp = []
chunksize = 100
df = pd.DataFrame()
for j, item in enumerate(mylist):
    tmp.append(item)
    if j % chunksize == chunksize-1:
        df2 = pd.DataFrame(tmp)
        df = pd.concat([df, df2], ignore_index=True)
        tmp = []
df2 = pd.DataFrame(tmp)
df = pd.concat([df, df2], ignore_index=True)

您应该不使用^{}?在

要输入到群集算法中,可以将生成的数值列转换为numpy数组:

# convert the numeric cols into a two-dimensional numpy array
# will cast the columns into a numpy array in the form of Tuples    
numpy_array = df.as_matrix(columns = ['col_one', 'col_two']) 

相关问题 更多 >