前提・実現したいこと
以下コードのif not文とelseの部分がうまく動作しません。
if文とif not文を同時に満たす条件を定義したい場合、コードをどのように書き換えればいいでしょうか。
【実現したいこと】
エクセルブックの「train」シートの2行目から1行ずつ読み込み、以下の処理を行う
①読み込んだ行の15列目が空白かつ、15列目全体にimage_nameの値が入っていない場合:読み込んだ行の15列目に同行13列目のimage_nameの値を代入する
②読み込んだ行の15列目が空白だが、15列目のいずれかに同じimage_nameの値が入っている場合:読み込んだ行の16列目に同行14列目のbbox_infoの値を代入する
学習させたいのは肺のX線画像であり、trainシートには、15000枚分の学習用画像名や、分類ラベルや、疾患部分のbounding box情報が記載されています。必要な情報のみ抽出してテキストファイルに転記したく、その前準備として上記のことを実現したいと思っています。
画像は15000枚ですが、複数の所見がある場合、同じ画像の情報が複数の行に分かれて記載されているため、テキストファイルへの転機の際に重複が起きぬよう、上記のような処理を取りたい次第です。
該当のソースコード
Python
1import datetime 2import openpyxl 3 4xlsx_file = "train.xlsx" 5 6# エクセルブック 7wb = openpyxl.load_workbook(xlsx_file, data_only=True) 8 9# エクセルシート 10ws = wb["train"] 11 12max_row = wb["train"].max_row 13#print(max_row) 14 15for row in range(1,max_row + 1): 16 image_name = ws.cell(row = row+1 , column = 13).value 17 bbox_info = ws.cell(row = row+1 , column = 14).value 18 #print(image_name) 19 #print(bbox_info) 20 if ws.cell(row = row+1 , column = 15).value is None: 21 if not image_name in ws['O2':'O67916']: 22 ws.cell(row = row+1 , column = 15).value = image_name 23 ws.cell(row = row+1, column = 16).value = bbox_info 24 else: 25 ws.cell(row = row+1 , column = 16).value = bbox_info 26 27#エクセルの保存 28wb.save(filename = xlsx_file) 29
回答2件
あなたの回答
tips
プレビュー