如何使用单个命令 [Python - Pandas] 获取所有列的数据类型?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/43992806/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get datatypes of all columns using a single command [ Python - Pandas ]?
提问by Rusty
I want to see the datatype of all columns stored in my dataframe without iterating over them. What is the way?
我想查看存储在我的数据框中的所有列的数据类型,而无需对其进行迭代。方法是什么?
回答by jezrael
10 min to pandashas nice example for DataFrame.dtypes
:
10 分钟到熊猫有很好的例子DataFrame.dtypes
:
df2 = pd.DataFrame({
'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
print (df2)
A B C D E F
0 1.0 2013-01-02 1.0 3 test foo
1 1.0 2013-01-02 1.0 3 train foo
2 1.0 2013-01-02 1.0 3 test foo
3 1.0 2013-01-02 1.0 3 train foo
print (df2.dtypes)
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
But with dtypes=object
it is a bit complicated (generally, obviously it is string
):
但是dtypes=object
它有点复杂(通常,显然它是string
):
Sample:
样本:
df = pd.DataFrame({'strings':['a','d','f'],
'dicts':[{'a':4}, {'c':8}, {'e':9}],
'lists':[[4,8],[7,8],[3]],
'tuples':[(4,8),(7,8),(3,)],
'sets':[set([1,8]), set([7,3]), set([0,1])] })
print (df)
dicts lists sets strings tuples
0 {'a': 4} [4, 8] {8, 1} a (4, 8)
1 {'c': 8} [7, 8] {3, 7} d (7, 8)
2 {'e': 9} [3] {0, 1} f (3,)
All values have same dtypes
:
所有值都相同dtypes
:
print (df.dtypes)
dicts object
lists object
sets object
strings object
tuples object
dtype: object
But type
is different, if need check it by loop:
但type
不同的是,如果需要通过循环检查:
for col in df:
print (df[col].apply(type))
0 <class 'dict'>
1 <class 'dict'>
2 <class 'dict'>
Name: dicts, dtype: object
0 <class 'list'>
1 <class 'list'>
2 <class 'list'>
Name: lists, dtype: object
0 <class 'set'>
1 <class 'set'>
2 <class 'set'>
Name: sets, dtype: object
0 <class 'str'>
1 <class 'str'>
2 <class 'str'>
Name: strings, dtype: object
0 <class 'tuple'>
1 <class 'tuple'>
2 <class 'tuple'>
Name: tuples, dtype: object
Or first value of columns with iat
:
或列的第一个值iat
:
print (type(df['strings'].iat[0]))
<class 'str'>
print (type(df['dicts'].iat[0]))
<class 'dict'>
print (type(df['lists'].iat[0]))
<class 'list'>
print (type(df['tuples'].iat[0]))
<class 'tuple'>
print (type(df['sets'].iat[0]))
<class 'set'>