Построить фрейм данных из dict и переназначить столбцы?

#python-3.x #pandas #dataframe

Вопрос:

Я пытаюсь построить фрейм данных из словаря переназначить столбцы, но получаю пустой фрейм данных. Пожалуйста, сообщите, что я делаю не так:

 import pandas as pd
pd.DataFrame({'Name' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'],
              'Age' : [23, 21, 22, 21],
              'University' : ['BHU', 'JNU', 'DU', 'BHU']},
columns = list('ABC'))
 

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

1. удалить columns = list('ABC') деталь

2. @AnuragDabas но я хочу сохранить его или переименовать, могу ли я сделать это на лету?

Ответ №1:

Вы определяете имена столбцов дважды. Один раз в качестве ключей словаря и один раз с columns параметром, который конфликтует. Если вы хотите переименовать свои столбцы [«A», «B», «C»], сделайте это после:

 df = pd.DataFrame({'Name' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'],
                   'Age' : [23, 21, 22, 21],
                   'University' : ['BHU', 'JNU', 'DU', 'BHU']},
                 )
df.columns = list('ABC')
 

выход:

            A   B    C
0      Ankit  23  BHU
1  Aishwarya  21  JNU
2    Shaurya  22   DU
3   Shivangi  21  BHU
 

Наиболее эффективным было бы сделать это напрямую:

 df = pd.DataFrame({'A' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'],
                   'B' : [23, 21, 22, 21],
                   'C' : ['BHU', 'JNU', 'DU', 'BHU']},
                 )
 

Если вам действительно нужно ввести словарь таким, какой он есть, другой вариант -:

 my_dict = {'Name' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'],
           'Age' : [23, 21, 22, 21],
           'University' : ['BHU', 'JNU', 'DU', 'BHU']}
df = pd.DataFrame(my_dict).rename(columns=dict(zip(my_dict, list('ABC'))))
 

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

1. слишком быстро я собираюсь опубликовать это dict(zip(my_dict, list('ABC')

2. @AnuragDabas я думаю, что мы действительно опубликовали в одну и ту же секунду, в любом случае 1 😉

Ответ №2:

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

 d={'Name' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'],
              'Age' : [23, 21, 22, 21],
              'University' : ['BHU', 'JNU', 'DU', 'BHU']}
#Finally:
df=pd.DataFrame(d.values(),index=list('ABC')).T
 

или

вы можете переименовать свои столбцы после создания фрейма данных

 df=pd.DataFrame({'Name' : ['Ankit', 'Aishwarya', 'Shaurya', 'Shivangi'],
          'Age' : [23, 21, 22, 21],
          'University' : ['BHU', 'JNU', 'DU', 'BHU']})
df.columns=list('ABC')