繁体   English   中英

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

[英]Best method of converting Pandas dataframe into list of dictionaries for each column

我有一个 pandas dataframe 没有已知的尺寸/形状。 我需要将此 dataframe 转换为具有以下布局的字典列表:

[
{"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

这对于具有多列的大型数据框来说效率相当低,所以我想知道是否有更快的方法来做到这一点?

我会很感激任何建议!

您可以将 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]}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM