#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.