#python #python-3.x #pandas #dataframe
#python #python-3.x #pandas #фрейм данных
Вопрос:
У меня есть словарь, который я хочу преобразовать в фрейм данных pandas. Проблема в том, что столбцы и строки находятся в части значений моего словаря. Как мне преобразовать dict.values
в фрейм данных?
Например: test = {TableName('Extract','Extract): myDesiredDf}
Вот набор данных:
{TableName('Extract', 'Extract'): depot_name market submarket realized_date
0 <NA> Boston Boston 2020-09-18
1 <NA> Bay Area Bay Area 2020-09-07
2 <NA> Minneapolis Minneapolis 2020-08-27
3 <NA> Washington, DC Washington, DC 2020-09-10
4 <NA> New York New York 2020-09-07
... ... ... ... ...
79069 Unknown Location Washington, DC Washington, DC 2020-09-14
79070 Unknown Location Washington, DC Washington, DC 2020-09-15
79071 Unknown Location Washington, DC Washington, DC 2020-09-16
79072 Unknown Location Washington, DC Washington, DC 2020-09-22
79073 Unknown Location Washington, DC Washington, DC 2020-09-25
category subcategory actual denom nume
0 Headcount Clocked-In 11.0 NaN NaN
1 Headcount Clocked-In 40.0 NaN NaN
2 Headcount Clocked-In 8.0 NaN NaN
3 Headcount Clocked-In 25.0 NaN NaN
4 Headcount Unknown 85.0 NaN NaN
... ... ... ... ... ...
79069 Repairs: Unknown Location eBike 18.0 NaN NaN
79070 Repairs: Unknown Location eBike 35.0 NaN NaN
79071 Repairs: Unknown Location eBike 14.0 NaN NaN
79072 Repairs: Unknown Location eBike 3.0 NaN NaN
79073 Repairs: Unknown Location eBike 2.0 NaN NaN
[79074 rows x 9 columns]}
Что я пробовал:
pd.Dataframe(test)
ValueError: If using all scalar values, you must pass an index
pd.DataFrame(test.values())
ValueError: Must pass 2-d input. shape=(1, 79074, 9)
pd.DataFrame(test,index=[0])
ValueError: Shape of passed values is (9, 1), indices imply (1, 1)
Мой желаемый результат:
Я хочу, чтобы test.values() / myDesiredDf был фреймом данных pandas.
Комментарии:
1. Не можете ли вы транспонировать. df.T
2. Попробуйте pd.DataFrame(test.values()[0]) — ошибка указывает на то, что вы преобразуете трехмерный объект.
3. @Roryo’Connell это не сработало, но pd.DataFrame(list(test.values())[0]) сделал свое дело. Спасибо!
Ответ №1:
Вы пробовали pd.DataFrame.from_dict(тест)?
Ответ №2:
pd.DataFrame(list(test.values())[0])