やりたいことと現在の問題
お世話になります。
VBAより引数(filename,keyword,n)を渡してPythonで処理をするプログラムを作成していますが、実行時にエラーが発生しています。
問題の部分は以下のコードだと認識しています。
sum = len(df[df.iloc[:,:].astype(str).str.contains(keyword,na=False)])
「df.iloc」[:,:]で、2次元配列のすべての要素に対して処理をしている認識です。
なお、「df.iloc[:,0]」とした場合、0列に含まれる要素はカウントできました。
読み込んでいるCSVファイルはカラム数が一定ではなく、また、文字列と数字が混在しているものとなります。
そのため、数字を読み込んだ際に以下のエラーが表示されているのではないかと考えておりますが、
正しい書き方がわからず、アドバイスをいただけると幸いです。
よろしくお願いします。
Python
1#SEARCHWORD.py 2import os 3import sys 4import pandas as pd 5import xlwings as xw 6 7def Search(file,keyword,n): 8 # これをカラム名にする 9 col_names = [ 'c{0:02d}'.format(i) for i in range(90) ] 10 11 df = pd.DataFrame() 12 df = pd.read_csv(file, names=col_names) 13 14 #アクティブブックのシート管理インスタンスを返す 15 wss = xw.sheets 16 17 #検索結果はDFで帰ってくるのでlenで行数取得 18 sum = len(df[df.iloc[:,:].str.contains(keyword,na=False)]) 19 wss("キーワード検索結果").cells(int(n),3).value = sum
エラーメッセージ
Error
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\users\desktop\work\python\SEARCHWORD.py", line 19, in Search
sum = len(df[df.iloc[:,:].str.contains(keyword,na=False)])
File "C:\Users\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\core\generic.py", line 5465, in getattr
return object.getattribute(self, name)
AttributeError: 'DataFrame' object has no attribute 'str'
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/26 23:54