我有一个也混合了 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.concat
与 pd.Series
和 pd.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/