2016-07-21 99 views
2

同一系列中的不同数据类型,比方说,我们有一个熊猫系列包含如下(字符串,整数和日期时间)获取熊猫

数据类型的混合。如果我检查的diff_series(diff_series.dtype)的D型,它告诉我这是一个预期的对象。我想获得系列中的不同数据类型。我有以下列表理解,它让我在一系列独特的dtypes。

import datetime 
import pandas as pd 

>> diff_series = pd.Series(['1','2',3,"random_text",datetime.datetime.now()]) 
>> set([type(i) for i in diff_series]) 

    set([<type 'str'>, <type 'datetime.datetime'>, <type 'int'>]) 

但我觉得应该有一个更有效率(pandonic)的方式去做这件事?

我试图

>> diff_series.get_dtype_counts() 

    object 1 
    dtype: int64 

这不是什么即时寻找。有任何想法吗 ?

+0

仅供参考,我关于熊猫0.17.1 –

+0

虽然我认为它理解你的意思,但重要的是要注意,数据类型是*中的数据类型*只是“对象”。 –

回答

3

这应该是更pandonic:

diff_series.apply(type) 

0     <type 'str'> 
1     <type 'str'> 
2     <type 'int'> 
3     <type 'str'> 
4 <type 'datetime.datetime'> 
dtype: object 
4

我们可以这样做:

In [4]: diff_series.map(type).value_counts() 
Out[4]: 
<class 'str'>     3 
<class 'datetime.datetime'> 1 
<class 'int'>     1 
dtype: int64 

或者,还不如 “全力以赴”:

In [5]: diff_series.map(type).value_counts().index.values 
Out[5]: array([<class 'str'>, <class 'datetime.datetime'>, <class 'int'>], dtype=object)