python - 如何将 OrderedDict 的混合列表转换为 Dataframe?

标签 python python-3.x

我有一个也混合了 OrderedDict 的列表。我正在尝试从该列表创建一个数据框。我不确定如何循环遍历列表中 OrderedDict 中的列表和键值对。

以下是列表:

l = [(-2322251069948147489, [OrderedDict([('lat', '46.72161'), ('lon', '-92.45936'), ('name', 'Cloquet'), ('admin1', 'Minnesota'), ('admin2', 'Carlton County'), ('cc', 'US')])]), 
(-2542975094649810558, [OrderedDict([('lat', '38.52491'), ('lon', '-121.9708'), ('name', 'Winters'), ('admin1', 'California'), ('admin2', 'Yolo County'), ('cc', 'US')])]), 
(-1984478776812705270, [OrderedDict([('lat', '38.88101'), ('lon', '-77.10428'), ('name', 'Arlington'), ('admin1', 'Virginia'), ('admin2', 'Arlington County'), ('cc', 'US')])]), 
(-2720329071386930320, [OrderedDict([('lat', '41.70054'), ('lon', '-93.46216'), ('name', 'Bondurant'), ('admin1', 'Iowa'), ('admin2', 'Polk County'), ('cc', 'US')])])]

我正在尝试将上面的列表转换为数据框 我正在做的是

df = pd.DataFrame(l)

这只给了我 2 列。我想要得到的是下面

           0                 1               2
   -2322251069948147489  Minnesota    Carlton County
   -2542975094649810558  California   Yolo County
   -1984478776812705270  Virginia     Arlington County
   -2720329071386930320  Iowa         Polk County

我不知道如何查看数据框中的键值付费列。任何帮助将不胜感激。

最佳答案

pd.concatpd.Seriespd.DataFrame 一起使用:

import pandas as pd

new_l = [(i[0], i[1][0]) for i in l]
# Unpacks the list of OrderedDict

ind, dicts = map(pd.Series, zip(*new_l))
df = pd.concat([ind, pd.DataFrame(list(dicts))], 1)

输出:

                     0       lat        lon       name      admin1  \
0 -2322251069948147489  46.72161  -92.45936    Cloquet   Minnesota   
1 -2542975094649810558  38.52491  -121.9708    Winters  California   
2 -1984478776812705270  38.88101  -77.10428  Arlington    Virginia   
3 -2720329071386930320  41.70054  -93.46216  Bondurant        Iowa   

             admin2  cc  
0    Carlton County  US  
1       Yolo County  US  
2  Arlington County  US  
3       Polk County  US  

您现在可以选择所需的列:df[[0, 'admin1', 'admin2']]:

                     0      admin1            admin2
0 -2322251069948147489   Minnesota    Carlton County
1 -2542975094649810558  California       Yolo County
2 -1984478776812705270    Virginia  Arlington County
3 -2720329071386930320        Iowa       Polk County

关于python - 如何将 OrderedDict 的混合列表转换为 Dataframe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56421274/

相关文章:

python - twisted+wxPython 存在不干净的情况

java - 使用python与java程序交互

linux - Python PATH .is_file() 将符号链接(symbolic link)评估为文件

python - 文本中的多个词索引

python - TensorFlow 导入错误 : "DLL load failed" and "No module named pywrap_tensorflow_internal"

python - 在Python中使用外部图像

python - Biopython 类实例 - Entrez.read : I don't know how to manipulate the output 的输出

python - 错误 : "Driver not loaded" in PyQt5

python - 使用 Exchangelib 更改发件人帐户

python - psycopg2 - Postgresql 数据库中的 'Relation does not exist'