【发布时间】:2020-03-10 02:43:46
【问题描述】:
这似乎是一个简单的问题,但我对 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]
我想将此 pandas 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]}]
是否有另一个简单的命令可以将此 pandas DataFrame 转换为列表字典?我觉得我错过了什么。
【问题讨论】:
标签: python pandas dataframe dictionary