2016-07-21 93 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)