Почему я не могу использовать переменную в цикле for x в df.itertuples, созданном до этого цикла? - PullRequest
0 голосов
/ 26 марта 2019

Это, наверное, основной вопрос панд, но я не могу понять?

У меня есть этот цикл:

n=0
for lum in lum_df.itertuples():
    print(lum.X)
    print(lum.Y)
    lum_x = float(lum.X)
    lum_y = float(lum.Y)
    for point in street_df.itertuples():
        print(point.X)
        print(point.Y)
        print(lum_x)
        print(lum_y)
        dist = calculate_dist(lum_x, point.X, lum_y, point.Y)
        print('DISTANCE IS : ' + str(dist))
        print('================= next point================')
    print('=============NEXT LUM==============')

Каким-то образом, когда я пытаюсь вычислить расстояние между двумя точками во втором цикле for, значения (lum_x и lum_y) возвращаются как nan. Мне нужно будет найти способ использовать эти ранее созданные переменные во втором цикле. Почему это не позволяет мне это сделать и что я могу с этим поделать?

PS: point.x и point.y уже являются плавающими переменными!

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

вот структура данных lum_df:

                    X                 Y          Name
624  617053.712042883  5027348.30038856  AvenuedAnjou
664  617039.606222975    5027394.710913  AvenuedAnjou
692  617033.143825697  5027442.18526991  AvenuedAnjou
723  617024.347605215  5027483.05113423  AvenuedAnjou
751   617006.33108007  5027520.85562618  AvenuedAnjou

и когда я запускаю этот вариант:

#Boucle 2
n=0
for ix, lum in lum_df.itertuples():
    print(lum.X)
    print(lum.Y)
    lum_x = float(lum.X)
    lum_y = float(lum.Y)
    distmin=2000000
    nopoint=0
    exit()
    for point in street_df.itertuples():
        print(point.X)
        print(point.Y)
        print(lum_x)
        print(lum_y)
        dist = calculate_dist(lum_x, point.X, lum_y, point.Y)
        print('DISTANCE IS : ' + str(dist))
        print('================= next point================')
    print('=============NEXTLUM==============')

Я получаю:

    for ix, lum in lum_df.itertuples():
ValueError: too many values to unpack (expected 2)
0 голосов
/ 26 марта 2019
import pandas as pd

lum_df = pd.DataFrame({'X': [1, 2, 3, 4], 'Y': [3, 4, 5, 6]})
street_df = pd.DataFrame({'X': [5, 6, 7, 8], 'Y': [9, 10, 11, 12]})

for ix, lum in lum_df.iterrows():
    print(float(lum.X))
    print(float(lum.Y))
    for ix, point in street_df.iterrows():
        print(point.X)
        print(point.Y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...