如何在熊猫中找到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,实际打印需要一些时间。
答案 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)
即将推出您附近的发行版,您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)]