小编典典

检查数据框列是否为分类

python

我似乎无法使用v0.15+中经过Pandas改进的Categoricals进行简单的dtype检查。基本上我只想要类似的东西is_categorical(column) ->True/False

import pandas as pd
import numpy as np
import random

df = pd.DataFrame({
    'x': np.linspace(0, 50, 6),
    'y': np.linspace(0, 20, 6),
    'cat_column': random.sample('abcdef', 6)
})
df['cat_column'] = pd.Categorical(df2['cat_column'])

我们可以看到dtype“类别”列的“类别”为:

df.cat_column.dtype
Out[20]: category

通常,我们可以通过与dtype的名称进行比较来进行dtype检查:

df.x.dtype == 'float64'
Out[21]: True

但这在尝试检查x列是否为类别时似乎不起作用:

df.x.dtype == 'category'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-94d2608815c4> in <module>()
----> 1 df.x.dtype == 'category'

TypeError: data type "category" not understood

有什么方法可以在熊猫v0.15 +中进行这些类型的检查?


阅读 215

收藏
2021-01-20

共1个答案

小编典典

使用该name属性进行比较,它应该始终有效,因为它只是一个字符串:

>>> import numpy as np
>>> arr = np.array([1, 2, 3, 4])
>>> arr.dtype.name
'int64'

>>> import pandas as pd
>>> cat = pd.Categorical(['a', 'b', 'c'])
>>> cat.dtype.name
'category'

因此,总而言之,您可以得到一个简单,直接的函数:

def is_categorical(array_like):
    return array_like.dtype.name == 'category'
2021-01-20