将多个数据框导出为HTML文件

4

您好,我有一个Python脚本可以生成多个数据框:df1,df2,...,df10。 理想情况下,我希望将这些数据框全部导出到一个PDF文件中,但我意识到这相当复杂。因此,我正在尝试使用df.to_html()函数将不同的数据框导出到一个单独的HTML文件中。 但是,如何将所有数据框导出到同一个HTML文件中呢?

import numpy as np
from numpy.random import randn
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(randn(5,4),columns='W X Y Z'.split())
df1 = pd.DataFrame(randn(5,4),columns='A B C D'.split())
df.head().to_html("testhtml.html")
df1.head().to_html("testhtml.html")

使用上述代码,第二个.to_html指令将覆盖第一个指令的内容,导致在HTML文件中只打印一个单一的数据框。 有没有办法在同一HTML文件中“追加”数据框?谢谢。
1个回答

6
使用.to_html()方法将其转换为字符串并将它们添加起来。
$ ipython
In [1]: import numpy as np
   ...: from numpy.random import randn
   ...: import pandas as pd
   ...: import matplotlib.pyplot as plt
   ...: 
   ...: df = pd.DataFrame(randn(5,4),columns='W X Y Z'.split())
   ...: df1 = pd.DataFrame(randn(5,4),columns='A B C D'.split())
   ...: 

In [2]: with open("a.html", 'w') as _file:
   ...:     _file.write(df.head().to_html() + "\n\n" + df1.head().to_html())
   ...:     

In [3]:                                                                                                                                     
Do you really want to exit ([y]/n)? y

现在你将能够在同一文件中看到这两个表格:

enter image description here

$ cat a.html
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>W</th>
      <th>X</th>
      <th>Y</th>
      <th>Z</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1.565874</td>
      <td>1.612569</td>
      <td>1.213773</td>
      <td>-0.059322</td>
    </tr>
    <tr>
      <th>1</th>
      <td>-0.995417</td>
      <td>-0.279548</td>
      <td>0.204154</td>
      <td>0.803098</td>
    </tr>
    <tr>
      <th>2</th>
      <td>-0.188367</td>
      <td>-1.495322</td>
      <td>0.675200</td>
      <td>-2.432019</td>
    </tr>
    <tr>
      <th>3</th>
      <td>0.776902</td>
      <td>2.642486</td>
      <td>1.858429</td>
      <td>0.024089</td>
    </tr>
    <tr>
      <th>4</th>
      <td>1.010742</td>
      <td>0.065047</td>
      <td>1.264571</td>
      <td>-0.982195</td>
    </tr>
  </tbody>
</table>

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>A</th>
      <th>B</th>
      <th>C</th>
      <th>D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>-1.381432</td>
      <td>-0.098652</td>
      <td>-1.002030</td>
      <td>0.133971</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0.284307</td>
      <td>0.566509</td>
      <td>-0.640148</td>
      <td>-0.284037</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0.412460</td>
      <td>-1.326584</td>
      <td>-0.297338</td>
      <td>0.531000</td>
    </tr>
    <tr>
      <th>3</th>
      <td>-0.456548</td>
      <td>-0.354438</td>
      <td>-0.675962</td>
      <td>0.507228</td>
    </tr>
    <tr>
      <th>4</th>
      <td>-0.393275</td>
      <td>0.462753</td>
      <td>2.198363</td>
      <td>-0.042263</td>
    </tr>
  </tbody>

谢谢!您知道为什么我打开a.html文件后,其中的空行没有显示出来吗? - Angelo
您可以使用 <br> 标签在 HTML 中表示空行。 - AbdealiJK
谢谢。我不确定我的后续问题是否仍然相关。如果不是,我很抱歉。我使用了您建议的代码,它运行得很好。因此,由于使用 <br> 允许我在数据帧之间输入空行,我还尝试了以下代码来添加一个 png 文件,但它不起作用。您有任何想法为什么吗?使用以下代码:with open("a.html", 'w') as _file: _file.write(df.head().to_html() + '\n \nTEST <br> <br> <br> <img src="C:\Users\Python\Notebook Files\test_02.png"/> ' + df.head().to_html()) - Angelo
大多数浏览器需要文件以 file://C:\Users\... 开头。请参考此链接:https://dev59.com/dG7Xa4cB1Zd3GeqPvvfd - AbdealiJK
在字符串中,''被视为转义序列,因此当您输入"C:\Users"时,它会认为您想要\U的转义序列。为了解决这个问题,请输入双\\ - Ijaz Ur Rahim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接