前提・実現したいこと
処理結果をPandasのDataframeに実行中にリアルタイムで表示しようとしています。
For文で繰り返し処理をしていて、各回の結果がDataframeの一行になります。
For文が多数の処理を行うため、実行中も出力結果を確認したく、実行中にDataframeをリアルタイムで表示し、更新し続けるにはどのようにすればよいでしょうか。
出力イメージはこのような感じです。実現したいことは一つ一つの行が追加されるたびに、出力結果が更新していくのを可視化したいです。
Print('aaa', flush = True)のPanda DataFrame版のようなことをやりたいです。
発生している問題・エラーメッセージ
pandasはflushは非対応、PrintにするとPandas dataframeの形でなくなり思った通り表示されない。
AttributeError: 'DataFrame' object has no attribute 'flush'
該当のソースコード
For文の中で処理した最後に、以下のDataframe処理をしています。ごちゃごちゃとした処理していますが、全てDataFrame変数です。 #データ抽出 ##取得したHTMLが有効であったか、エラーであったを判別するためのリストを作りたい for i in range(numberofURLs): dfname = 'df' + str(i) for url in URLs_list: try: response = requests.get(url) response.encoding = response.apparent_encoding soup = BeautifulSoup(response.text, 'html.parser') title = [] for i in soup.find_all('p',): ## 改行コードを削除 title.append(i.getText()[0:].replace('\n', '')) for i in soup.find_all('td',): title.append(i.getText()[0:].replace('\n', '')) #リストを一つの連続した文字列に変換 mojiretu = ''.join(title) #検索結果をリスト化 result = [] for keyword in Keywords_list: result.append(mojiretu.count(str(keyword))) dfname = pd.DataFrame(result,columns=[url]) df[url] = dfname except Exception: result = [] for i in Keywords_list: result.append(0) dfname = pd.DataFrame(result,columns=[url]) df[url] = dfname #Pandas Dataframeに処理 dfset = df.set_index('Keywords') reversedf = dfset.transpose() reversedf = reversedf.astype(int) reversedf['Total'] = reversedf.sum(axis=1) reversedf_ascend = reversedf.sort_values('Total', ascending=False) display(reversedf_ascend)
上記の通り、PrintのFlush=TrueではDataframeでは出力されなかったため、断念。それ以外はやり方が分からず試していません。
なお、Print(reversedf_ascend)のようにやるとこのような出力結果となってしまいます。
Keywords Professor Assistant
https://www.jica.go.jp/jica-ri/experts/takahara... 5 1
https://www.bbb 0 0
https://www.aaa 0 0
https://www.jica.go.jp/jica-ri/ja/publication/t... 0 0
Keywords Head Total
https://www.jica.go.jp/jica-ri/experts/takahara... 1 7
https://www.bbb 0 0
https://www.aaa 0 0
https://www.jica.go.jp/jica-ri/ja/publication/t... 0 0
ありがとうございます。
教えて頂いた以下のやり方で試したところ近づいたような気がしましたが、まだ思うような結果となっていません。
from IPython.display import display
display(df)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

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