Вопрос по python, dataframe, pandas, typeerror – Панды: создавать именованные столбцы в DataFrame из dict

25

У меня есть словарь объекта формы:

my_dict = {id1: val1, id2: val2, id3: val3, ...}

Я хочу создать это в DataFrame, где я хочу назвать 2 столбцаbusiness_id» а также 'business_code.

Я старался:

business_df = DataFrame.from_dict(my_dict,orient='index',columns=['business_id','business_code'])

Но это говоритfrom_dict Безразлично»принять аргумент столбцов.

TypeError: from_dict () получил неожиданный аргумент ключевого слова 'колонны

Ваш Ответ

5   ответов
25

Вы можете перебирать пункты:

In [11]: pd.DataFrame(list(my_dict.iteritems()),
                      columns=['business_id','business_code'])
Out[11]: 
  business_id business_code
0         id2          val2
1         id3          val3
2         id1          val1
проверьте версию, она доступна в 0.23.0 Aquib
Это не совсем отвечает на вопрос, поскольку в документах указано, что можно использовать аргумент ключевого слова столбцов:pandas.pydata.org/pandas-docs/stable/generated/... Nolan Conaway
my_dict.items() для Python 3 Manuel
0

Это касается TypeError, с которой вы столкнулись. Согласно документации Pandas, from_dict будет принимать ключевое словоколонны только если восток = 'индекс'.

0

Сделай это:

создать фрейм данных

df = pd.DataFrame(data_as_2d_ndarray)

Создайте отсортированный список имен столбцов из словаря - настройте ключ karg, если нужно извлечь значение сортировки из своего текста, обойдя словарь, данные должны иметь согласованные формы

col_names = sorted(list(col_dict.iteritems()),key=lambda x:x[0])

изменить форму и установить имена столбцов

df.columns  = zip(*col_names)[1]
8

Чтобы получить ту же функциональность, что и в документации, и избегать использования обходных путей кода, убедитесь, чтоВы используете самую последнюю версию Pandas. Недавно я столкнулся с той же ошибкой при запуске строки кода из учебника Pandas:

pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]),orient='index', columns=['one', 'two', 'three'])

Я проверил версию Pandas и обнаружил, что у меня запущена версия 22, когда доступна версия 23.

import pandas as pd
pd.__version__
Out[600]: '0.22.0'

Я обновил с помощью pip:

c:\pip install --upgrade pandas

Я подтвердил, что моя версия обновлена до 23, и тот же код from_dict () работал без ошибок. Никаких изменений кода не требуется.

3

С версии 0.23.0Вы можете указатьcolumns параметр в:from_dict

my_dict = {id1: val1, id2: val2, id3: val3, ...}
df = pd.DataFrame.from_dict(my_dict, orient='index', columns=['business_id', 'business_code'])

Примечание: я также ответил тем жеэтот похожий вопрос.

@anthls Этой информации недостаточно для решения вашей проблемы, которая, я не думаю, является прямым результатомfrom_dict, Если вам нужна помощь по переполнению стека, я бы порекомендовал задать отдельный вопрос. Ninjakannon
Я попробовал это, используя pandas 0.24.2 и Python 3.6.8 получил следующую ошибку:ValueError: Shape of passed values is (3, 1), indices imply (3, 2) anthls
@anthls Теперь я понимаю, что ты имеешь в виду, спасибо. Я обновил ответ. Ninjakannon
Извиняюсь, если бы я неясно - я хотел, чтобы вы и другие знали, что яЯ попробовал ваш ответ, но это не такя не работаю Я использовал следующий код (используя панды 0.24.2 и Python 3.6.8):import pandas as pd my_dict = {"id1": "val1", "id2": "val2", "id3": "val3"} df = pd.DataFrame.from_dict(my_dict, orient='index', columns=['business_id', 'business_code']) и получил ошибку, которую я упомянул (ямы пропустили полную трассировку стека). Я использовал принятый ответ, и он работал, поэтому я нене требует решения моей проблемы, но подумал, что вы хотели бы знать. anthls

Похожие вопросы