将dataframe转换为每列字典列表的最佳方法

2024-09-29 00:16:05 发布

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

我有一个熊猫数据框,它没有已知的大小/形状。我需要将此数据框转换为具有以下布局的词典列表:

[
{"heading": column1name, "values":[list of column 1 values]},
{"heading": column2name, "values":[list of column 2 values]},
...and so on
]

我目前正在使用for循环迭代每一列,并在列表中添加一个字典:

def sendHeadingsAndValues():
    columns = list(USER_DATA.columns.values)
    dd_columnList = []
    
    for column in columns:
        dd_columnList.append({"heading": column, "values": USER_DATA[column].to_list()})
    
    return dd_columnList

对于具有多列的大型数据帧,这是相当低效的,所以我想知道是否有一种更快的方法来实现这一点

如果有任何建议,我将不胜感激


Tags: columnsof数据列表fordatacolumn布局
1条回答
网友
1楼 · 发布于 2024-09-29 00:16:05

您可以使用pandas.DataFrame.to_dict与列表理解一起使用。请参见以下内容:

import pandas as pd

d=df.to_dict('list')

res=[{'heading':i, 'values':k} for i, k in d.items()]

例如:

df=pd.DataFrame({'a':[10,20,30,40], 'b':[100,200,300,400]})

>>>print(df)
    a    b
0  10  100
1  20  200
2  30  300
3  40  400

d=df.to_dict('list')
    
res=[{'heading':i, 'values':k} for i, k in d.items()]

>>> print(res)

[{'heading': 'a', 'values': [10, 20, 30, 40]}, {'heading': 'b', 'values': [100, 200, 300, 400]}]

相关问题 更多 >