如何将字典列表转换为 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())))
如何将字典列表转换为 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())))