Pandas read_csv() 中忽略的类别数据类型
Pandas category dtypes ignored in read_csv()
我在 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.3 来测试是否是版本问题,但我已经在 1.1.4 上进行了测试,它按预期工作。请将 pandas 更新到最新版本,因为 v1.1.0 中有 a lot of 分类修复。
如果没有帮助,请检查提供的转换器并验证 CSV 是否不包含格式错误的数据,例如错误的 unicode,但我预计不会出现此类问题。
我在 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.3 来测试是否是版本问题,但我已经在 1.1.4 上进行了测试,它按预期工作。请将 pandas 更新到最新版本,因为 v1.1.0 中有 a lot of 分类修复。
如果没有帮助,请检查提供的转换器并验证 CSV 是否不包含格式错误的数据,例如错误的 unicode,但我预计不会出现此类问题。