这似乎是一个简单的问题,但是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转换为列表字典?我觉得我想念什么。
df.set_index('column1')['column2'].to_dict()