gpt4 book ai didi

python - 当我传递 skip_footer arg 时,Pandas read_csv 忽略列数据类型

转载 作者:太空狗 更新时间:2023-10-29 18:16:04 24 4
gpt4 key购买 nike

当我尝试将 csv 文件导入数据框时,pandas (0.13.1) 忽略了 dtype 参数。有没有办法阻止 pandas 自行推断数据类型?

我正在合并几个 CSV 文件,有时客户包含字母和 pandas 导入作为字符串。当我尝试合并这两个数据帧时出现错误,因为我正在尝试合并两种不同的类型。我需要将所有内容存储为字符串。

数据片段:

|WAREHOUSE|ERROR|CUSTOMER|ORDER NO|
|---------|-----|--------|--------|
|3615 | |03106 |253734 |
|3615 | |03156 |290550 |
|3615 | |03175 |262207 |
|3615 | |03175 |262207 |
|3615 | |03175 |262207 |
|3615 | |03175 |262207 |
|3615 | |03175 |262207 |
|3615 | |03175 |262207 |
|3615 | |03175 |262207 |

导入行:

df = pd.read_csv("SomeFile.csv", 
header=1,
skip_footer=1,
usecols=[2, 3],
dtype={'ORDER NO': str, 'CUSTOMER': str})

df.dtypes 输出如下:

ORDER NO    int64
CUSTOMER int64
dtype: object

最佳答案

Pandas 0.13.1 默默地忽略了 dtype 参数,因为 c 引擎 不支持 skip_footer。这导致 Pandas 退回到不支持 dtypepython 引擎

解决方案?使用转换器

df = pd.read_csv('SomeFile.csv', 
header=1,
skip_footer=1,
usecols=[2, 3],
converters={'CUSTOMER': str, 'ORDER NO': str},
engine='python')

输出:

In [1]: df.dtypes
Out[2]:
CUSTOMER object
ORDER NO object
dtype: object

In [3]: type(df['CUSTOMER'][0])
Out[4]: str

In [5]: df.head()
Out[6]:
CUSTOMER ORDER NO
0 03106 253734
1 03156 290550
2 03175 262207
3 03175 262207
4 03175 262207

保留原始文件中的前导 0,所有数据都存储为字符串。

关于python - 当我传递 skip_footer arg 时,Pandas read_csv 忽略列数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com