我有一个 csv
看起来像(标题 = 第一行):
name,a,a1,b,b1
arnold,300311,arnld01,300311,arnld01
sam,300713,sam01,300713,sam01
当我跑步时:
df = pd.read_csv('file.csv')
列 a
和 b
有一个 .0
像这样附加到末尾:
df.head()
name,a,a1,b,b1
arnold,300311.0,arnld01,300311.0,arnld01
sam,300713.0,sam01,300713.0,sam01
列 a
和 b
是整数或空白,那么为什么 pd.read_csv()
将它们视为读取时的浮点数和整数?
原文由 codingknob 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 root 在评论中提到的,这是 Pandas(和 Numpy)的限制。
NaN
是一个浮点数,CSV 中的空值为 NaN。这也列在 pandas 的 陷阱 中。
您可以通过几种方式解决此问题。
对于下面的示例,我使用以下内容导入数据 - 请注意,我在列
a
和b
中添加了一个空值行删除 NaN 行
您的第一个选择是删除包含此
NaN
值的行。这样做的缺点是您会丢失整行。将数据放入数据框后,运行以下命令:This drops all
NaN
rows from the dataframe, then it converts columna
and columnb
to anint
用占位符数据填充
NaN
此选项将用丢弃值替换所有
NaN
值。该值是您需要确定的。对于这个测试,我做了它-999999
。这将允许使用保留其余数据,将其转换为 int,并明确哪些数据无效。如果您稍后根据列进行计算,您将能够过滤掉这些行。这会产生一个像这样的数据框:
保留浮点值
最后,另一种选择是保留浮点值(和
NaN
)而不用担心非整数数据类型。