熊猫的信息()到HTML

goz*_*lli 7 python pandas

Pandas提供了一些describe()关于a 的函数的摘要统计信息DataFrame.函数的输出是另一个DataFrame,因此可以通过调用轻松导出到HTML to_html().

它还提供有关的信息DataFrameinfo()功能,但是这打印出来,返回None.有没有办法获得与DataFrame导出为HTML的任何其他方式相同的信息?

以下是info()供参考的示例:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 7 columns):
0    5 non-null float64
1    5 non-null float64
2    5 non-null float64
3    5 non-null float64
4    5 non-null float64
5    5 non-null float64
6    5 non-null float64
dtypes: float64(7)
memory usage: 360.0 bytes
Run Code Online (Sandbox Code Playgroud)

goz*_*lli 1

根据所有这些精彩答案的输入,我最终做了以下事情:

  • 去掉前三行和最后两行,因为它们包含内存信息和其他非表格格式的内容(以及固定的行数)
  • 使用以下命令将列信息(datatype在下面的代码片段中)转换为 pandas 的 DataFrameStringIO
  • 重命名了列“count”、“null”和“dtype”
  • 返回列信息的 html 和剩余行的纯文本(前 3 和后 2)

所以结果是这样的:

def process_content_info(content: pd.DataFrame):
    content_info = StringIO()
    content.info(buf=content_info)
    str_ = content_info.getvalue()

    lines = str_.split("\n")
    table = StringIO("\n".join(lines[3:-3]))
    datatypes = pd.read_table(table, delim_whitespace=True, 
                   names=["column", "count", "null", "dtype"])
    datatypes.set_index("column", inplace=True)

    info = "\n".join(lines[0:2] + lines[-2:-1])

    return info, datatypes
Run Code Online (Sandbox Code Playgroud)

也许第二个 StringIO 可以简化,但无论如何这实现了我所需要的。