假设我们有一个pandas系列,它包含以下混合数据类型(string、int和datetime)
如果我检查diff_系列(diff_series.dtype)上的dtype,它将显示它是预期的对象。我想得到序列中不同的数据类型。我有下面的列表理解,它使我在一个系列的独特的数据类型。

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'>])

但我觉得应该有一个更有效的(泛音)方式来做这件事?
我试过了
>> diff_series.get_dtype_counts()

   object    1
   dtype: int64

这不是我要找的。有什么想法吗?

最佳答案

我们可以这样做:

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)

09-12 16:14