【发布时间】:2021-10-18 17:45:16
【问题描述】:
我正在阅读一个大型平面文件,其中包含多列时间戳数据。数据有一个布尔列,可以是 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 时指定 dtype,但我希望有一个更简洁的解决方案,例如 convert_objects,我可以在其中指定 parse_numeric 或 parse_dates。
【问题讨论】:
-
你的最后一行有一个缺失值,这会产生一个混合的dtype,你应该发现前3行实际上是boolean dtype,你想对缺失的值做什么?
-
这正是我的问题。前三个实际上是布尔值。 D 列的数据稀疏。我可以使用默认值 false。
-
然后调用
df['D'] = df['D'].fillna(False)将确保该列的 dtype 是同质的 -
fillna 是否采用 dict 可以将不同的默认值呈现给不同的列?这将解决我的用例,因为我所呈现的只是数据的一个子集。很抱歉,我无法从documentation
-
哈哈我误读了这个问题,以为是要求将文件的列转换为
np.bool