pandas 到具有单行的pd Dataframe 的字典列表

csbfibhn  于 2023-02-11  发布在  其他
关注(0)|答案(3)|浏览(119)

我有一个字典列表,我试图创建一个具有单行的pd.DataFrame,其中字典的键是一列,字典的值是它的行。
下面是一个示例:

list_of_dicts = [{'key1': 'value1'}, {'key2':'value2'}]

输出数据框应如下所示:

key1   | key2
value1 | value2

我已经试过了
pd.DataFrame(list_of_dicts),但是我得到了这样的结果:

key 1   | key2
value1  | NaN
NaN     | value2

我已经试过了

df = pd.DataFrame()
for e in list_of_dicts:
    for k, v in e.items():
        df[k] = k

但是它创建了一个空的DataFrame,字典键作为列,但是没有值。你能帮忙吗?
谢谢

eanckbw9

eanckbw91#

一些可能性。
使用字典解析和pd.DataFrame.from_dict

df = pd.DataFrame.from_dict({0: {k: v for d in list_of_dicts
                                 for k,v in d.items()}},
                            orient='index')

或使用ChainMap(如果效率很重要,则发出警告:ChainMap增加了开销):

from collections import ChainMap
df = pd.DataFrame.from_dict({0: dict(ChainMap(*list_of_dicts))},
                            orient='index')

或与json_normalize结合使用:

df = pd.json_normalize(dict(ChainMap(*list_of_dicts)))

或者,对于concatto_frame

df = pd.concat(map(pd.Series, list_of_dicts)).to_frame().T

输出:

key1    key2
0  value1  value2
agxfikkp

agxfikkp2#

在您的解决方案中:

df = pd.DataFrame()
for e in list_of_dicts:
    for k, v in e.items():
        df[k] = k

最后一行不是应该是:

df[k] = v
cfh9epnr

cfh9epnr3#

尝试以下代码行:

import pandas as pd

list_of_dicts = [{'key1': 'value1'}, {'key2':'value2'}]
df = pd.DataFrame.from_dict({k: v for d in list_of_dicts for k, v in d.items()}, orient='index').T

print(df)
    • 结果:**
key1    key2
0  value1  value2

相关问题