Вложенный цикл в фрейме данных Python - PullRequest
0 голосов
/ 05 мая 2018

Я использую библиотеку Python для панд, и я очень застрял во вложенном цикле.

Я хочу выполнить расчет для каждой строки - это нормально:

for i, row in df_merged.iterrows():

Мои данные выглядят так:

product price   max_move_%
  1     100      10

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

for a in range((df_merged['max_move'][row])* (- 1)), (df_merged['max_move'][row])):

Так что я получаю

product price   max_move_%  true_move     price_new
1       100      10          -10            90
1       100      10          -9             91
 .....
1       100      10          10             110

возможно ли это даже в данных? Использовать конкретное значение из df в цикле>

Я получаю сообщение об ошибке такого типа:

 ---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call last)
 <ipython-input-51-9c87df3fd221> in <module>()
       2 
       3 for i, row in df_merged.iterrows():
----> 4     for h in range(((df_merged['max_move_%'][row]) * (- 1), (df_merged['max_move_%'][row]))):
  5        print('ok')
  6 

 TypeError: 'tuple' object cannot be interpreted as an integer

Спасибо!

1 Ответ

0 голосов
/ 05 мая 2018

df.iterrows () дает вам кортеж, где i - индекс, а строка - серия, соответствующая индексу. То, как вы хотите использовать свой внутренний цикл, вы должны использовать индекс, а не Series:

   for a in range((df_merged['max_move_%'][i]) * (- 1), df_merged['max_move_%'][i]):

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

   for a in range((row['max_move_%']) * (- 1), row['max_move_%']):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...