获取熊猫多索引的dtype

时间:2018-06-28 21:17:53

标签: python python-3.x pandas

如何在熊猫中找到dtype的{​​{1}}而又不打印所有值(例如,如果您键入MultiIndex,就会发生这种情况)。我只想知道索引的名称及其类型。

例如:

df.index

这样做:

df = pd.DataFrame({"a": np.arange(100000), "b": np.arange(100000)[::-1]}, index=pd.MultiIndex.from_arrays([np.arange(100000), np.arange(100000)[::-1]], names=["i1", "i2"]))

对于较长的大尺寸df,实际打印需要一些时间。

3 个答案:

答案 0 :(得分:4)

使用get_level_values:

df.index.get_level_values(0).dtype
dtype('int64')

df.index.get_level_values(1).dtype
dtype('int64')

使用姓名

df.index.names
FrozenList(['i1', 'i2'])

答案 1 :(得分:4)

熊猫 >= 1.3 [标准]

即将推出您附近的发行版,您MultiIndex.dtypes 将很快可用:

df.index.dtypes

i1    int64
i2    int64
dtype: object 

对于旧版本,如果你的索引不是太大,可以先用to_frame转换成frame,然后查询dtypes:

df.index.to_frame().dtypes

i1    int64
i2    int64
dtype: object

答案 2 :(得分:0)

基于@Scott Boston的出色回答,我编写了此函数,用于快速检查多级索引dfs所有级别的dtype,并认为我会分享:

def index_level_dtypes(df):
    return [f"{df.index.names[i]}: {df.index.get_level_values(n).dtype}"
            for i, n in enumerate(df.index.names)]