Для данных * l oop in pandas - PullRequest
       0

Для данных * l oop in pandas

0 голосов
/ 17 февраля 2020

У меня есть следующий фрейм данных в pandas:

src_ch_id;src_ch_name;src_ch_desc;src_table_name
aa;q1;11;DataTable_4
bb;q2;22;DataTable_4
cc;q3;33;DataTable_4

С этим фреймом данных я создам вставку для каждой строки в базе данных. Для тестирования я распечатаю параметры.

for index in channeldef_data_df:    
   src_ch_id = channeldef_data_df.iloc[[index], channeldef_data_df.columns.get_loc('src_ch_id')]
   print('--')
   print(src_ch_id)

Я выдаю следующую ошибку:

".iloc requires numeric indexers, got ['src_ch_id']"

Я думаю, что проблема заключается в части [index] в коде. В чем моя ошибка в л oop?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Если вы хотите извлечь только src_ch_id и распечатать, возможно, вы можете использовать itertuples()

for index in channeldef_data_df.itertuples():    
    src_ch_id = index.src_ch_id
    print('--')
    print(src_ch_id)

Таким образом, вы получите src_ch_id для каждой строки

0 голосов
/ 17 февраля 2020

Используйте pandas.DataFrame.iterrows для итерации по строкам DataFrame в виде пар (индекс, серия).
как for index, row in channeldef_data_df.iterrows():

>>> for index,_ in channeldef_data_df.iterrows():
...     src_ch_id = channeldef_data_df.iloc[[index], channeldef_data_df.columns.get_loc('src_ch_id')]
...     print(src_ch_id)
...
0    aa
Name: src_ch_id, dtype: object
1    bb
Name: src_ch_id, dtype: object
2    cc
Name: src_ch_id, dtype: object

Вы используете for index in channeldef_data_df:, это будет возвращать только имена столбцов в вашем коде.

>>> for index in channeldef_data_df:
...     print(index)
...
src_ch_id
src_ch_name
src_ch_desc
src_table_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...