Проблема создания фрейма данных Pandas из словаря

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Я создал фрейм данных из такого словаря:

 import pandas as pd
data = {'Name': 'Ford Motor', 'AssetType': 'Common Stock', 'Exchange': 'NYSE'}

records = []
statement = {}
    
for key, value in data.items():
    statement = {}
    statement[key] = value

    records.append(statement)
df = pd.DataFrame(records)
  

Если я поступлю таким образом, результат будет выглядеть следующим образом:

     Name        AssetType     Exchange
0   Ford Motor  NaN           NaN
1   NaN         Common Stock  NaN
2   NaN         NaN           NYSE
  

Я хочу, чтобы значения в первой строке и результат выглядели так:

     Name    AssetType    Exchange
0   Ford    Common Stock NYSE
  

Комментарии:

1. pd.DataFrame(data, index=[0]) ?

2. Вы уверены, что хотите AssetType быть Motor , а не 'Common Stock' нет?

3. извините, ошибки опечатки. Я хочу, чтобы тип активов был обычным

Ответ №1:

Просто поместите data внутри списка [] при создании фрейма данных:

 import pandas as pd
data = {'Name': 'Ford Motor', 'AssetType': 'Common Stock', 'Exchange': 'NYSE'}

df = pd.DataFrame([data])
print(df)
  

С принтами:

          Name     AssetType Exchange
0  Ford Motor  Common Stock     NYSE
  

Ответ №2:

Существует множество способов, которыми вы можете захотеть превратить данные (dict, list, вложенный список и т. Д.) В фрейм данных. Pandas также включает в себя множество методов создания, некоторые из которых будут перекрываться, что затрудняет запоминание того, как создавать dfs из данных. Вот несколько способов, которыми вы могли бы сделать это для своих данных:

  • df = pd.DataFrame([data])

  • df = pd.Series(data).to_frame().T

  • pd.DataFrame.from_dict(data, orient="index").T

  • pd.DataFrame.from_records(data, index=[0])

imo, from_dict наименее интуитивно понятный (я никогда не получаю правильные аргументы с первой попытки). Я считаю, что сосредоточение внимания на одном методе построения более запоминающимся, чем использование другого каждый раз; Я использую pd.DataFrame(...) and from_records(...) больше всего.

Комментарии:

1. Здравствуйте, спасибо за вашу помощь. В словаре есть 3 пары ключа и значения. Если я хочу выбрать только 2 пары ключа и значения для создания фрейма данных, могу ли я узнать, что я могу сделать?

2. Несколько способов — если ваши данные невелики, просто создайте фрейм данных и передайте список столбцов, которые вы хотите сохранить в оригинале, что-то вроде subset_cols = [c for c in df.columns if c != "Name"]; df = df[subset_cols]