#python #html #pandas #dataframe
Вопрос:
У меня есть фреймы данных serveral pandas в списке. Итак, у меня есть несколько кадров данных (df[0], df[1]). Каждый кадр данных, который я хочу записать в html.
HTML-код в файле python выглядит следующим образом:
html = f''' lt;htmlgt; lt;headgt; titlegt;{"test"}lt;/titlegt; lt;/headgt; lt;bodygt; lt;pgt;{"just a test sentence"}lt;/pgt; lt;bodygt; lt;htmlgt; '''
Написать просто обычный df довольно просто ({df.head(5).to_html()}):
html = f''' lt;htmlgt; lt;headgt; titlegt;{"test"}lt;/titlegt; lt;/headgt; lt;bodygt; lt;pgt;{"just a test sentence"}lt;/pgt; {df.head(5).to_html()} lt;bodygt; lt;htmlgt; '''
Как подойти к этому в моем случае, когда у меня есть df[0], df[1] и так далее. Как перебрать список df в html, чтобы показать каждый из них друг среди друга? Конечно, я просто могу использовать {df[0].head(5).to_html()}. Но я не знаю, сколько кадров данных в списке, и поэтому я должен использовать, например, цикл for. Но я не знаю, как вставить цикл for в html-код. Спасибо
Комментарии:
1. Покажите ожидаемый результат , попытаемся разобраться и данные в каком формате
Ответ №1:
Я предполагаю, что вы хотите объединить HTML-строки всех фреймов данных в один.
Просто создайте функцию, которая создает HTML-код для данного фрейма данных
def df_to_html(df): return f''' lt;htmlgt; lt;headgt; lt;titlegt;{"test"}lt;/titlegt; lt;/headgt; lt;bodygt; lt;pgt;{"just a test sentence"}lt;/pgt; {df.head(5).to_html()} lt;bodygt; lt;htmlgt;'''
Затем выполните итерацию по списку кадров данных, вызовите функцию для каждого из них и, наконец, используйте str.join
для объединения полученных HTML-кодов.
import numpy as np import pandas as pd # Create a list of 3 random DataFrames with shape (10, 3) # just for the sake of example df_list = [pd.DataFrame(np.random.randint(10, size=(10,3)), columns=list("ABC")) for _ in range(3)] # iterate over the dfs, generate the HTML, and concatenate the results all_df_html = "".join(df_to_html(df) for df in df_list) gt;gt;gt; print(all_df_html)
lt;htmlgt; lt;headgt; lt;titlegt;testlt;/titlegt; lt;/headgt; lt;bodygt; lt;pgt;just a test sentencelt;/pgt; lt;table border="1" class="dataframe"gt; lt;theadgt; lt;tr style="text-align: right;"gt; lt;thgt;lt;/thgt; lt;thgt;Alt;/thgt; lt;thgt;Blt;/thgt; lt;thgt;Clt;/thgt; lt;/trgt; lt;/theadgt; lt;tbodygt; lt;trgt; lt;thgt;0lt;/thgt; lt;tdgt;9lt;/tdgt; lt;tdgt;6lt;/tdgt; lt;tdgt;6lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;1lt;/thgt; lt;tdgt;4lt;/tdgt; lt;tdgt;0lt;/tdgt; lt;tdgt;8lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;2lt;/thgt; lt;tdgt;4lt;/tdgt; lt;tdgt;6lt;/tdgt; lt;tdgt;4lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;3lt;/thgt; lt;tdgt;7lt;/tdgt; lt;tdgt;5lt;/tdgt; lt;tdgt;2lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;4lt;/thgt; lt;tdgt;1lt;/tdgt; lt;tdgt;9lt;/tdgt; lt;tdgt;1lt;/tdgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;bodygt; lt;htmlgt; lt;htmlgt; lt;headgt; lt;titlegt;testlt;/titlegt; lt;/headgt; lt;bodygt; lt;pgt;just a test sentencelt;/pgt; lt;table border="1" class="dataframe"gt; lt;theadgt; lt;tr style="text-align: right;"gt; lt;thgt;lt;/thgt; lt;thgt;Alt;/thgt; lt;thgt;Blt;/thgt; lt;thgt;Clt;/thgt; lt;/trgt; lt;/theadgt; lt;tbodygt; lt;trgt; lt;thgt;0lt;/thgt; lt;tdgt;4lt;/tdgt; lt;tdgt;2lt;/tdgt; lt;tdgt;3lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;1lt;/thgt; lt;tdgt;4lt;/tdgt; lt;tdgt;6lt;/tdgt; lt;tdgt;3lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;2lt;/thgt; lt;tdgt;0lt;/tdgt; lt;tdgt;8lt;/tdgt; lt;tdgt;1lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;3lt;/thgt; lt;tdgt;6lt;/tdgt; lt;tdgt;7lt;/tdgt; lt;tdgt;1lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;4lt;/thgt; lt;tdgt;9lt;/tdgt; lt;tdgt;5lt;/tdgt; lt;tdgt;3lt;/tdgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;bodygt; lt;htmlgt; lt;htmlgt; lt;headgt; lt;titlegt;testlt;/titlegt; lt;/headgt; lt;bodygt; lt;pgt;just a test sentencelt;/pgt; lt;table border="1" class="dataframe"gt; lt;theadgt; lt;tr style="text-align: right;"gt; lt;thgt;lt;/thgt; lt;thgt;Alt;/thgt; lt;thgt;Blt;/thgt; lt;thgt;Clt;/thgt; lt;/trgt; lt;/theadgt; lt;tbodygt; lt;trgt; lt;thgt;0lt;/thgt; lt;tdgt;7lt;/tdgt; lt;tdgt;4lt;/tdgt; lt;tdgt;3lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;1lt;/thgt; lt;tdgt;1lt;/tdgt; lt;tdgt;9lt;/tdgt; lt;tdgt;7lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;2lt;/thgt; lt;tdgt;4lt;/tdgt; lt;tdgt;0lt;/tdgt; lt;tdgt;1lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;3lt;/thgt; lt;tdgt;0lt;/tdgt; lt;tdgt;7lt;/tdgt; lt;tdgt;9lt;/tdgt; lt;/trgt; lt;trgt; lt;thgt;4lt;/thgt; lt;tdgt;6lt;/tdgt; lt;tdgt;1lt;/tdgt; lt;tdgt;1lt;/tdgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;bodygt; lt;htmlgt;
Комментарии:
1. Спасибо за помощь. Как можно дать другой тип вывода ТОЛЬКО для цикла № 1? Поэтому я имею в виду: не использовать «просто тестовое предложение» для первого цикла, а, например, «это первое предложение».