字典传递的熊猫类别dtypes在read_csv()中被忽略

时间:2020-04-24 08:37:21

标签: python pandas categorical-data

在Pandas(版本1.0.3)中加载csv文件时遇到一个奇怪的问题。

我想将某些列自动转换为category。 为此,我创建了带有列名及其类型的字典。 好吧,对于一列它确实有效,而对其他列则无效。 我没有任何错误。
可能导致列未解析为category的原因是什么? 看起来很奇怪,如果之后我尝试通过强制转换将该列转换为category,则该操作会完美地工作。 因此,乍一看似乎不是列错误的问题。

col_types = {
    'CURRENCY': "category",
    'PRODUCT': "category",
    'PRODUCT_TYPE': "category",
}

def parse_csv(path_location):
    df = pd.read_csv(
    path_location, 
    sep=';',
    engine='c',
    dtype=col_types,
    true_values=['Y', 'y'],
    false_values=['N', 'n'],
    converters=converters,
    usecols=['PRODUCT', 'PRODUCT_TYPE', 'PORTFOLIO_CURRENCY', 'NATIONALITY'],
    nrows=99)
    return df

我通过上面的函数得到的结果是:

Data columns (total 5 columns):
 #   Column              Non-Null Count  Dtype   
---  ------              --------------  -----   
 0   PORTFOLIO_CURRENCY  198 non-null    category
 1   PRODUCT             198 non-null    object  
 2   PRODUCT_TYPE        198 non-null    object  
 3   AGE                 185 non-null    float64 
 4   NATIONALITY         198 non-null    object  
dtypes: category(1), float64(1), object(3)

1 个答案:

答案 0 :(得分:0)

尽管我不能安装1.0.3来测试版本是否是问题,但我已经在1.1.4上对其进行了测试,并且可以正常工作。请将熊猫更新为最新版本,因为v1.1.0中有a lot of个类别分类的修复程序。

如果没有帮助,请检查提供的转换器,并验证CSV是否不包含格式错误的数据(例如错误的unicode),但是我不会遇到此类问题。