在 read_csv 中使用数据类型时列会被覆盖吗?

问题描述 投票:0回答:1

我有一个 example.csv,看起来像 列 1、列 2、d、e AA,1,BB,2 bb,2,aa,1 抄送,3,DD,3

我愿意

import polars as pl
dtypes = {
    'car' : pl.String,
    'game' : pl.Int32,
    'house' : pl.String,
    'bob' : pl.String
}
df = pl.read_csv(
    "example.csv",
    dtypes=dtypes
)

print(df.columns)

输出为: [‘汽车’、‘游戏’、‘房子’、‘鲍勃’]

这会覆盖 csv 中的列名称,这不是我所期望的行为

python python-polars
1个回答
0
投票

Polars
默认使用第一行作为标题行,这意味着它将第一行视为列名称。但是,如果您指定的
dtypes
字典中的键与 CSV 文件中的列名称不匹配,则
Polars
将使用
dtypes
字典中的键作为列名称。 如果您想保留 CSV 文件中的原始列名称,并仍然使用
dtypes
字典来指定数据类型,则需要确保
dtypes
字典中的键与 CSV 文件中的列名称完全匹配。
这是代码的更正部分,也根据您的其他列进行修改:

import polars as pl

# Correct data types matching the CSV-file column names
dtypes = {
    'col1': pl.Utf8,
    'col2': pl.Int32,
    'd': pl.Utf8,
    'e': pl.Int32,
}
© www.soinside.com 2019 - 2024. All rights reserved.