У меня есть список с большим количеством диктонов. У каждого Дикта есть 5 пар ключей/ценностей.
пример Dict
{
'name': 'Demetrius',
'number': '0001',
'style': 'D',
'text': 'Demetrius an der russischen Grenze. Er ist von Kiew...',
'year': '1797'
}
моя цель:
моя цель - это DataFrame со следующим порядком. Каждый Дикт в своем собственном ряду
>>> df
number name year style text
0001 Demetrius 1805 D Demetrius an der russischen Grenze. Er ist von Kiew...
0002
Код:
d = содержимое текстового файла - список dicts,
book = a 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 столбцы и значения из ключа "число" в качестве индекса?
решение: - благодаря 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