実現したいこと
読み込んだExcelファイル(データフレーム)にリスト内の文字列(ファイル名)が存在していなければ、処理を実行する。
存在していれば実行しないようにしたい。
リストの中身は指定フォルダに入っているファイル名です。
リスト内の値は順に判定します。
試したこと
python
1for lists in list: 2 df=pd.read_excel('test.xlsx') 3 if df[~df['参照ファイル'].str.contains(lists)]: 4 #処理プログラム 5 #存在していなければ、ここの処理を実行する。 6 print('エラー')#存在していれば実行せず、エラーを出す。
発生している問題・エラーメッセージ
TypeError: bad operand type for unary ~: 'float'
「参照ファイル」列に空白があるのが問題……?と、思ったので、
python
1 if df[~df['参照ファイル'].str.contains(lists,na=False)]:
上記のように、「,na=False」を追加したのですが、
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
と、エラーが発生してしまいます。
何卒、よろしくお願いいたします。
any() を付けてみて下さい。
if ~df['参照ファイル'].str.contains(lists,na=False).any():
ご回答ありがとうございます。
存在していれば処理を実行せずにエラーを出すことはできました。
ありがとうございます。
しかし、存在していないときは処理が実行できず、以下のエラーが発生してしまいます。
AttributeError: Can only use .str accessor with string values!
「#存在していなければ、ここの処理を実行する。」の部分は具体的にどの様な処理なのでしょう?
読み込んだcsvのデータ整形をし、最後にExcelファイルに連結しております。
AttributeError はその部分で発生しているのではないでしょうか。
参照ファイル、列のデータ型が原因でした。
解決することができました、ありがとうございます。

回答1件
あなたの回答
tips
プレビュー