如何使用to_dict()将pandas DataFrame转换为列表字典?

问题描述 投票:0回答:2

这似乎是一个简单的问题,但是pandas.DataFrame.to_dict文档给我带来的棘手问题使我感到困惑:

我有以下带有两列的玩具示例pandas DataFrame,其中column2是列表的列:

import pandas as pd

dict1 = {'column1': ['list1', 'list2', 'list3'], 'column2': [[367, 30, 847, 482, 887, 654, 347, 504, 413, 821], [754, 915, 622, 149, 279, 192, 312, 203, 742, 846], [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]]}

df = pd.DataFrame(dict1)

print(df)
  column1                                            column2
0   list1  [367, 30, 847, 482, 887, 654, 347, 504, 413, 821]
1   list2  [754, 915, 622, 149, 279, 192, 312, 203, 742, 846]
2   list3  [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]

我想将此熊猫DataFrame转换成字典,其中每个键来自column1,值来自column2

这是我的首选输出:

{'list1': [367, 30, 847, 482, 887, 654, 347, 504, 413, 821], 
'list2': [754, 915, 622, 149, 279, 192, 312, 203, 742, 846], 
'list3': [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}

使用.to_dict(),这似乎很复杂。

如果尝试df.set_index('column1').T.to_dict(),则会得到一个字典,其中的字典中包含列名:

{'list1': {'column2': [367, 30, 847, 482, 887, 654, 347, 504, 413, 821]}, 
'list2': {'column2': [754, 915, 622, 149, 279, 192, 312, 203, 742, 846]}, 
'list3': {'column2': [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}}

如果尝试使用to_dict("list"),则会得到以下信息:

{'list1': [[367, 30, 847, 482, 887, 654, 347, 504, 413, 821]], 
'list2': [[754, 915, 622, 149, 279, 192, 312, 203, 742, 846]], 
'list3': [[586, 521, 470, 476, 693, 426, 746, 733, 528, 565]]}

这是不正确的,因为现在是列表列表的值,而不是单个列表。

如果我尝试to_dict("records"),则输出实际上是一个列表,而不是字典:

[{'list1': [367, 30, 847, 482, 887, 654, 347, 504, 413, 821], 
'list2': [754, 915, 622, 149, 279, 192, 312, 203, 742, 846], 
'list3': [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}]

是否有另一个简单的命令可以将该熊猫DataFrame转换为列表字典?我觉得我想念什么。

python pandas dataframe dictionary
2个回答
1
投票
df.set_index('column1')['column2'].to_dict()

1
投票
© www.soinside.com 2019 - 2024. All rights reserved.