pandas如何检查数据框中所有列的dtype?

时间:2016-11-01 01:50:18

标签: python pandas dataframe

似乎dtype只适用于pandas.DataFrame.Series,对吗?是否有一个函数可以一次显示所有列的数据类型?

4 个答案:

答案 0 :(得分:61)

单数表单dtype用于检查单个列的数据类型。 复数 形式dtypes用于返回所有列的数据类型的数据框。基本上:

对于单个列

dataframe.column.dtype

对于所有列

dataframe.dtypes

实施例

import pandas as pd
df = pd.DataFrame({'A': [1,2,3], 'B': [True, False, False], 'C': ['a', 'b', 'c']})

df.A.dtype
# dtype('int64')
df.B.dtype
# dtype('bool')
df.C.dtype
# dtype('O')

df.dtypes
#A     int64
#B      bool
#C    object
#dtype: object

答案 1 :(得分:3)

假设df是pandas DataFrame,然后一次获取所有列的非空值数量和数据类型,请使用:

df.info()

答案 2 :(得分:3)

更进一步,我假设您想对这些 dtype 做一些事情。 df.dtypes.to_dict() 派上用场。

my_type = 'float64'

dtypes = dataframe.dtypes.to_dict()

for col_nam, typ in dtypes.items():
    if (typ != my_type): #<---
        raise ValueError(f"Yikes - `dataframe['{col_name}'].dtype == {typ}` not {my_type}")

您会发现 Pandas 在比较 NumPy 类和用户提供的字符串方面做得非常好。例如:即使是 'double' == dataframe['col_name'].dtype 之类的东西也会在 .dtype==np.float64 时成功。

答案 3 :(得分:0)

如果您有很多列并且您执行 df.info()df.dtypes,它可能会为您提供列的整体统计信息,或者只是像顶部和底部的一些列

Int64Index:4387 个条目,1 到 4387

列:119 个条目, CoulmnA 到 ColumnZ

dtypes: datetime64[ns(24), float64(54), 对象(41)

内存使用:4.0+ MB

它只是给出了 24 列是日期时间,54 列是 float64,41 列是对象。

因此,如果您希望在一个命令中获得每一列的数据类型,请执行以下操作:

dict(df.dtypes)