Как я могу создать словарь из фрейма данных без указания имен столбцов в pandas?

#python #pandas #dictionary

#python #pandas #словарь

Вопрос:

Я пытаюсь преобразовать фрейм данных в dictionary в pandas, и у меня возникла проблема. Когда я указываю имена столбцов, я смог преобразовать фрейм данных в словарь, но когда я попытался обойтись без указания имен столбцов, а только по номерам столбцов, он выдает ошибку.

Вот пример моего фрейма данных (df1)

                        id                  Crub
    0   At1NC000060_TBH_1             Not found
    1   At1NC005280_TBH_1      Known_Gene_Sense
    2   At1NC007770_TBH_1      Known_Gene_Sense
    3   At1NC018710_TBH_1             Not found
    4   At1NC027560_TBH_1  Known_Gene_Antisense
    5   At1NC030450_TBH_1      Known_Gene_Sense
    6   At1NC031370_TBH_1  Known_Gene_Antisense
    7   At1NC035150_TBH_1  Known_Gene_Antisense
    8   At1NC046250_TBH_1      Known_Gene_Sense
    -------------
    -----------
  

Поэтому, когда он попытался преобразовать в словарь, как показано ниже, он работает нормально

 dic1 = dict(zip(df.id,df.Crub))
print(dic1)
{'At3NC025390_TBH_1': 'Known_Gene_Antisense', 'At1NC064880_TBH_1': 'Not found', 'At1NC035150_TBH_1': 'Known_Gene_Antisense', 'At3NC044300_TBH_1': 'Known_Gene_Antisense', 'At2NC000610_TBH_1': 'Known_Gene_Antisense'}
  

Однако, когда я попытался использовать номер столбца, я получаю сообщение об ошибке

 col2 = list(df1)[1]
dic2 = dict(zip(df.id,df.col2))
print dic2

AttributeError: 'DataFrame' object has no attribute 'col2'
  

Я не знаю, что я здесь делаю не так.

ps. Причина, по которой я не могу указать имя столбца, заключается в том, что я пытаюсь вставить этот код как часть другого кода, и поэтому я точно не знаю названия 2-го столбца, но я определенно знаю, что это второй столбец.

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

1. pandas.DataFrame.to_dict() pandas.pydata.org/pandas-docs/stable/generated/…

Ответ №1:

вы не можете вызвать такой столбец, если не знаете его имени. Если вы знаете только позицию, вы могли бы

  dict(zip(df.id,df.iloc[:,1]))
  

это будет второй столбец. если вы хотите сначала использовать 0

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

1. Отлично. Это сработало. Я думаю, мне следует вернуться и поработать над моими учебными пособиями по pandas.