#python #python-3.x #pandas #dataframe
#питон #python-3.x #панды #фрейм данных
Вопрос:
Я пытаюсь преобразовать дикт в фрейм данных Pandas следующим образом:
dff = pd.DataFrame( { 'CEO': 'ucMMe Mhll', 'address': 'vs5dlt3 B Se1kC eve0nre', 'address2': '-', 'city': 'a CSatanral', 'companyName': 'Agilent Technologies Inc.', 'country': 'nUatei tdetSs', 'description': "tns oo el' yty", 'employees': 17124, 'exc': 'gdgdgd', 'industry': 'sgeiTeotiroaLbtans r', 'issueType': 'abc', 'phone': '14087832319', 'primarySicCode': 4008, 'sector': ',atnSii Scilcofe,nnse TecisaPliinafs cedorhv cre', 'securityName': 'elooIne.nen htc iisTcgAgl', 'state': 'ailairofnC', 'symbol': 'A', 'tags': ['nllh he', 'gth', 'acsl', 'isiad', 'nr aitT'], 'website': 'win.gcm.', 'zip': '0752501-19'} )
И когда я распечатываю фрейм данных, я вижу следующий вывод:
print(dff)
Я ожидаю увидеть 1 строку только в кадре данных, но она дает 5. И я не могу понять, почему. Что я здесь делаю не так?
Комментарии:
1. Это связано с тем, что в вашей строке тегов 5, поэтому она пытается «заполнить пробелы для остальных». Чтобы исправить это, поместите вокруг него второй слой скобок, чтобы он рассматривал его как одну строку, а не 5.
2. Не знал этого, спасибо @LarrytheLlama
Ответ №1:
Ты не делаешь ничего плохого. Поскольку tags
это список, Pandas транслирует все остальные поля того же размера, что и фрейм данных, tags
и создает его. Вы можете сделать:
pd.Series(your_dict).to_frame().T
Или оберните свой диктант вокруг []
указания, что это строка (ориентация записи):
pd.DataFrame([your_dict])
Комментарии:
1. просто блестяще! Спасибо!
Ответ №2:
Это связано с тем, что в вашей строке тегов 5, поэтому она пытается «заполнить пробелы для остальных». Чтобы исправить это, поместите вокруг него второй слой скобок, чтобы он рассматривал его как одну строку, а не 5.
dff = pd.DataFrame( { 'CEO': 'ucMMe Mhll', 'address': 'vs5dlt3 B Se1kC eve0nre', 'address2': '-', 'city': 'a CSatanral', 'companyName': 'Agilent Technologies Inc.', 'country': 'nUatei tdetSs', 'description': "tns oo el' yty", 'employees': 17124, 'exc': 'gdgdgd', 'industry': 'sgeiTeotiroaLbtans r', 'issueType': 'abc', 'phone': '14087832319', 'primarySicCode': 4008, 'sector': ',atnSii Scilcofe,nnse TecisaPliinafs cedorhv cre', 'securityName': 'elooIne.nen htc iisTcgAgl', 'state': 'ailairofnC', 'symbol': 'A', 'tags': [['nllh he', 'gth', 'acsl', 'isiad', 'nr aitT']], # Double brackets to indicate 1 cell 'website': 'win.gcm.', 'zip': '0752501-19'} )
Ответ №3:
Вы можете поместить каждое значение словаря в список:
dff = pd.DataFrame({k: [v] for k,v in dct.items()}) gt;gt;gt; dff CEO address ... website zip 0 ucMMe Mhll vs5dlt3 B Se1kC eve0nre ... win.gcm. 0752501-19 [1 rows x 20 columns]
Комментарии:
1. Спасибо @not_speshal
2. @edn — Рад помочь! 🙂