Как перебрать строки таблицы Excel в Python? - PullRequest
0 голосов
/ 02 апреля 2020

Я написал скрипт, который dr aws создает прямоугольники вокруг элементов изображения в соответствии с их координатами x / y / r пикселей, и все это работает хорошо. Функциональный код выглядит следующим образом:

ss = pd.read_excel(xeno_data)

fandc = []
for index, row in ss.head().iterrows():
   filename = row['filename']
   coords   = row['xyr_coords']
   # Use RegEx to find anything that looks like a group of digits, possibly seperated by decimal point.
   x, y, r = re.findall(r'[0-9.]+',coords)
   print(f'DEBUG: filename={filename}, x={x}, y={y}, r={r}')
   fandc.append({'filename': filename, 'x':x, 'y':y, 'r':r})

#Draw a transparent rectangle:
im = im.convert('RGBA')
overlay = Image.new('RGBA', im.size)
draw = ImageDraw.Draw(overlay)

#The x,y,r coordinates are centre of sponge (x,y) and radius (r).
draw.rectangle(((float(fandc[0]['x'])-float(fandc[0]['r']), float(fandc[0]['y'])-float(fandc[0]['r'])), (float(fandc[0]['x'])+float(fandc[0]['r']), float(fandc[0]['y'])+float(fandc[0]['r']))), fill=(255,0,0,55))

img = Image.alpha_composite(im, overlay)
img = img.convert("RGB")
# Remove alpha for saving in jpg format.

img.show()

Этот код дает желаемый результат, и из this image видно, что он успешно нарисовал выцветший красный прямоугольник над элементом в центральное дно изображения.

Однако это делается с учетом первой строки данных ('fandc [0]'). Как настроить этот код для автоматической итерации или l oop через каждую строку моей электронной таблицы (xeno_data), то есть 'fand c 1 ', 'fandc [2]', 'fandc [3 ] ', et c, et c .....

Спасибо всем!

1 Ответ

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

Не имея доступа к тем же данным, вы изначально строите график на основе fandc [0] и хотите go через все остальные прямоугольники fandc [1], fandc [2], et c. Затем вы можете попробовать:

    for i in range(len(fandc)):
        draw.rectangle(((float(fandc[i]['x'])-float(fandc[i]['r']), float(fandc[i]['y'])-float(fandc[i]['r'])), (float(fandc[i]['x'])+float(fandc[i]['r']), float(fandc[i]['y'])+float(fandc[i]['r']))), fill=(255,0,0,55))

Посмотрите, как мы заменим наш начальный индекс 0 на наш итерационный индекс i.

Если вы боретесь за то, чтобы циклы работали, то, вероятно, целесообразно сделать онлайн-учебник по ним, и практиковать их с более простым кодом. См. https://www.w3schools.com/python/python_for_loops.asp для получения дополнительной информации

...