Для L oop Остановки только после 10 итераций Python - PullRequest
0 голосов
/ 02 апреля 2020

Добрый вечер, мне было интересно, если кто-нибудь мог бы предоставить понимание проблемы, с которой я столкнулся. Я написал простой для l oop, но он останавливается только после 10 итераций. Любые мысли или идеи будут с благодарностью, спасибо. Ниже мой код:

'' '

import pandas as pd
import numpy as np

directory1 = pd.read_csv('/media/Thesis_Maps//testing/JM_rev5.csv', header=None, skiprows=[-1], encoding='utf-8')

results = np.zeros((len(directory_DOE), 3) )

for i in directory1:
    x1=directory1.iloc[i,1]
    y1=x1+5
    results[i,0] = y1

1 Ответ

1 голос
/ 02 апреля 2020

В вашем примере pandas перебирает столбцы, а не строки.

Вы должны использовать directory1.iterrows() (или аналогичные функции)

for index, row in directory1.iterrows():
    results[index, 0] = row[1] + 5

, но вы можете сделать то же самое без итерации

results[:,0] = directory1[1] + 5

Пример

import pandas as pd
import numpy as np
import random

random.seed(1) # random will create always the same values

directory1 = pd.DataFrame(
    [[random.randint(0, 10) for x in range(10)] for x in range(200)],
)

print('shape:', directory1.shape)
print(directory1.head())

# ----

results = np.zeros((len(directory1), 3))

for index, row in directory1.iterrows():
    results[index, 0] = row[1] + 5

print(results[:5])

# ---    

results = np.zeros((len(directory1), 3))

results[:,0] = directory1[1] + 5

print(results[:5])

Результат

shape: (200, 10)

   0   1  2   3  4  5  6   7   8  9
0  2   9  1   4  1  7  7   7  10  6
1  3   1  7   0  6  6  9   0   7  4
2  3   9  1   5  0  0  0  10   8  0
3  6  10  3   6  0  8  3   7   7  8
4  3   5  3  10  3  7  4   0   6  8

# ---    

[[14.  0.  0.]
 [ 6.  0.  0.]
 [14.  0.  0.]
 [15.  0.  0.]
 [10.  0.  0.]]

# ---    

[[14.  0.  0.]
 [ 6.  0.  0.]
 [14.  0.  0.]
 [15.  0.  0.]
 [10.  0.  0.]]
...