gpt4 book ai didi

python - pandas: read_csv 如何强制 bool 数据 dtype bool 而不是对象

转载 作者:太空狗 更新时间:2023-10-29 22:18:48 27 4
gpt4 key购买 nike

我正在读取一个大型平面文件,其中包含多列的带时间戳的数据。数据有一个 bool 值列,可以是 True/False 或可以没有条目(计算结果为 nan)。

当读取 csv 时,bool 列被类型转换为对象,这会由于序列化错误而阻止将数据保存在 hdfstore 中。

示例数据:

A    B    C    D
a 1 2 true
b 5 7 false
c 3 2 true
d 9 4

我用下面的命令读取

import pandas as pd
pd.read_csv('data.csv', parse_dates=True)

一个解决方案是在读取 csv 时指定数据类型,但我希望有一个更简洁的解决方案,例如 convert_objects,我可以在其中指定 parse_numeric 或 parse_dates。

最佳答案

由于您的 csv 中缺少值,因此列的 dtype 显示为对象,因为您混合了 dtype,前 3 行值为 bool 值,最后一行值为 float 。

要转换 NaN 值使用 fillna ,它接受一个字典来映射所需的填充值和列并产生一个同质的数据类型:

>>> t = """
A B C D
a 1 NaN true
b 5 7 false
c 3 2 true
d 9 4 """
>>> df = pd.read_csv(io.StringIO(t),sep='\s+')
>>> df
A B C D
0 a 1 NaN True
1 b 5 7 False
2 c 3 2 True
3 d 9 4 NaN
>>> df.fillna({'C':0, 'D':False})
A B C D
0 a 1 0 True
1 b 5 7 False
2 c 3 2 True
3 d 9 4 False

关于python - pandas: read_csv 如何强制 bool 数据 dtype bool 而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739894/

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