如何将字典列表转换为 table

How to transform a list of dictionary into a table

如何将字典列表转换为 table。

这里是 table:

[{'wow': 1,
  'item': 1,
  'money': 1},
 {'best': 1,
  'sock': 1,
  'saved': 1,
  'found': 1},
 {'cry': 1,
  'shock': 1,
  'sound': 1}]

期望的输出:

words n
wow 1
item 1
... ...

我试过了

pd.DataFrame(x , columns=['Words', 'n'])

但是,我收到的输出只是一个包含空列的索引。

有什么帮助吗?

您可以使用pd.columns

可以参考的例子:

df = pd.DataFrame(someInput)
headers = ["Words", "n"]
df.columns = headers

链接这些词典的条目来构建可能会满足您的要求:

>>> x = [{'wow': 1,
...   'item': 1,
...   'money': 1},
...  {'best': 1,
...   'sock': 1,
...   'saved': 1,
...   'found': 1},
...  {'cry': 1,
...   'shock': 1,
...   'sound': 1}]
>>> from itertools import chain
>>> pd.DataFrame(chain.from_iterable(d.items() for d in x), columns=['words', 'n'])
   words  n
0    wow  1
1   item  1
2  money  1
3   best  1
4   sock  1
5  saved  1
6  found  1
7    cry  1
8  shock  1
9  sound  1

可以使用pandas melt

x = [{'wow': 1,
  'item': 1,
  'money': 1},
 {'best': 1,
  'sock': 1,
  'saved': 1,
  'found': 1},
 {'cry': 1,
  'shock': 1,
  'sound': 1}]

df = pd.DataFrame(x)
df = df.melt().dropna().reset_index(drop=True)
df.columns = ['words', 'n']

输出:

您可以在构建数据框时链接 .items()

records = [
    {'wow': 1, 'item': 1, 'money': 1},
    {'best': 1, 'sock': 1,'saved': 1, 'found': 1},
    {'cry': 1, 'shock': 1, 'sound': 1}
]

df = pd.DataFrame((item for record in records for item in record.items()),
                  columns=["Word", "n"])

结果:

    Word  n
0    wow  1
1   item  1
2  money  1
3   best  1
4   sock  1
5  saved  1
6  found  1
7    cry  1
8  shock  1
9  sound  1

希望这段代码对您有所帮助

  tbl = [{'wow': 1, 'item': 1, 'money': 1}, {'best': 1, 'sock': 1, 'saved': 1, 'found': 1}, {'cry': 1, 'shock': 1, 'sound': 1}] 
  dicts = {}
  for d in tbl:
    dicts.update(d)

  df = pd.DataFrame.from_dict(dict(word=list(dicts.keys()), n=list(dicts.values())))