首页 > 解决方案 > 有没有办法改变 Pandas str 表示以显示列的 dtypes(如 R' tibble 或 Julia 的 DataFrame)?

问题描述

有没有一种简单的方法来更改 Pandasstrhtml表示以显示dtypes标题下方的列(如 R'stibble或 Julia's DataFrame)?

我查看了文档,pd.set_options()但没有找到这样的选项。我发现的唯一方法是修改类的__repr__and _repr_html_DataFrame可能是通过一个子类。

标签: pythonpandas

解决方案


一个快速而肮脏的解决方案是为列设置一个 MultiIndex:

import pandas as pd

A = ["16-01-21 0:00",
     "16-01-21 0:05",
     "16-01-21 0:10",
     "16-01-21 0:15",
     "16-01-21 0:20",
     "16-01-21 1:20",
     "16-01-21 1:40",
     ]
B = [95.75, 90.10, 86.26, 92.72, 81.54, 4, 8]
C = [0.0, 0.0, 0.0, 0.0, 0.0, 0, 0]
df = pd.DataFrame({"A": A, "B": B, "C": C})
df.A = pd.to_datetime(df.A)

cols = [(c, getattr(df, c).dtype) for c in df.columns]
df.columns = pd.MultiIndex.from_tuples(cols, names=["name", "type"])

这将导致类似:

name                   A       B       C
type      datetime64[ns] float64 float64
0    2021-01-16 00:00:00   95.75     0.0
1    2021-01-16 00:05:00   90.10     0.0
2    2021-01-16 00:10:00   86.26     0.0
3    2021-01-16 00:15:00   92.72     0.0
4    2021-01-16 00:20:00   81.54     0.0
5    2021-01-16 01:20:00    4.00     0.0
6    2021-01-16 01:40:00    8.00     0.0

推荐阅读