dtype好像只对pandas.DataFrame.Series有效吧,有没有一个函数可以一次性显示所有列的数据类型?
dtype
pandas.DataFrame.Series
44u64gxh1#
单数形式dtype用于检查单个列的数据类型。***复数***形式dtypes用于返回所有列的数据类型的数据框。本质上:对于单列:
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
sr4lhrrt2#
假设df是一个PandasDataFrame,那么要一次获得所有列的非空值和数据类型的数量,请用途:
df.info()
ldxq2e6h3#
更进一步说,我假设您想对这些dtype做些什么。df.dtypes.to_dict()派上了用场。
df.dtypes.to_dict()
my_type = 'float64' dtypes = dataframe.dtypes.to_dict() for col_name, 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时成功。
'double' == dataframe['col_name'].dtype
.dtype==np.float64
rvpgvaaj4#
如果您有很多列,并且您执行df.info()或df.dtypes,它可能会给予列的总体统计信息,或者仅提供顶部和底部的一些列,如
df.dtypes
<class 'pandas.core.frame.DataFrame'> Int64Index: 4387 entries, 1 to 4387 Columns: 119 entries, CoulmnA to ColumnZ dtypes: datetime64[ns(24), float64(54), object(41) memory usage: 4.0+ MB
它只给出了24列是datetime,54列是float64,41列是object。因此,如果您希望在一个命令中包含每列的数据类型,请执行以下操作:dict(df.dtypes)
dict(df.dtypes)
qojgxg4l5#
(* 此答案没有直接回答OP的问题,但可能有用。*)到目前为止,响应依赖于打印的报告或字符串值,因此可能无法适应未来的需要。panda提供了一些编程的类型检查方法:
import pandas as pd from pandas.api.types import is_object_dtype, is_numeric_dtype, is_bool_dtype df = pd.DataFrame({'A': [1,2,3], 'B': [True, False, False], 'C': ['a', 'b', 'c']}) is_numeric_dtype(df['A']) >>> True
5条答案
按热度按时间44u64gxh1#
单数形式
dtype
用于检查单个列的数据类型。***复数***形式dtypes
用于返回所有列的数据类型的数据框。本质上:对于单列:
对于所有列:
sr4lhrrt2#
假设df是一个PandasDataFrame,那么要一次获得所有列的非空值和数据类型的数量,请用途:
ldxq2e6h3#
更进一步说,我假设您想对这些dtype做些什么。
df.dtypes.to_dict()
派上了用场。你会发现Pandas在比较NumPy类和用户提供的字符串方面做得非常好。即使像
'double' == dataframe['col_name'].dtype
这样的事情也会在.dtype==np.float64
时成功。rvpgvaaj4#
如果您有很多列,并且您执行
df.info()
或df.dtypes
,它可能会给予列的总体统计信息,或者仅提供顶部和底部的一些列,如它只给出了24列是datetime,54列是float64,41列是object。
因此,如果您希望在一个命令中包含每列的数据类型,请执行以下操作:
dict(df.dtypes)
qojgxg4l5#
(* 此答案没有直接回答OP的问题,但可能有用。*)
到目前为止,响应依赖于打印的报告或字符串值,因此可能无法适应未来的需要。
panda提供了一些编程的类型检查方法: