Python/Pandas-将Dict列表放入Pandas DataFrame-Dict Keys可以是列



我有一个包含很多dict的列表。每个Dict有5个键/值对。

示例Dict

{ 
'name': 'Demetrius',
'number': '0001',
'style': 'D',
'text': 'Demetrius an der russischen Grenze. Er ist von Kiew...',
'year': '1797'
}

我的目标:

我的目标是一个具有以下顺序的DataFrame。每个Dict在其自己的行

>>> df
number  name        year  style  text
0001    Demetrius   1805  D      Demetrius an der russischen Grenze. Er ist von Kiew...
0002

代码:

d=文本文件的内容-dicts列表,

book=类似示例dict 的dict

>>>import pandas as pd
>>>df = pd.DataFrame()
>>>for book in d:
>>>    df = pd.concat([df, pd.DataFrame(list(book.items()))])
>>>print(df)
0                  1
0   name               Demetrius
1   number             0001
2   style              D
3   text               Demetrius an der russischen Grenze. Er ist von Kiew...
4   year               1805
0   name               Der versöhnte Menschenfeind
1   number             0002
2   style              D
3   text               Der versöhnte Menschenfeind - Fragment  Gegend...
4   year               1790
...

问题:

我如何直接实现Dataframe(我的目标(的风格,或者我如何更改现有的df,我将dict.keys和列以及"number"键的值作为索引?

解决方案:-感谢jpp

>>> df = pd.DataFrame(d).set_index('number')
>>> df
name                       style   text                                                year
number              
0001     Demetrius                      D   Demetrius an der russischen Grenze Er ist vo...     1805
0002     Der versöhnte Menschenfeind    D   Der versöhnte Menschenfeind - Fragment Gegend...    1790

pd.DataFrame构造函数直接接受字典列表。这将比重复附加到现有数据帧更有效。这里有一个演示:

d1 = {'name': 'Demetrius', 'number': '0001',
'style': 'D', 'text': 'Demetrius an der...',
'year': '1797'}
d2 = {'name': 'ABC', 'number': '0002',
'style': 'E', 'text': 'Some text',
'year': '1850'}
L = [d1, d2]
df = pd.DataFrame(L)
print(df)
name number style                 text  year
0  Demetrius   0001     D  Demetrius an der...  1797
1        ABC   0002     E            Some text  1850

最新更新