2016-03-25 31 views
0

我很困惑熊猫0.18.0。在我输入的csv数据中,一个字段应该包含日期为YYYYMMDD的字符串,但是有些行有这个缺失或错误格式。我想用可能的日期将此列表示为日期时间,并且错过哪里不是。为什么to_datetime只产生pandas中浮点列的缺失值?

我尝试了几个选项,最让我感觉不到的是parse_dates在读取表格(与read_table)后,却用pandas.to_datetime(DataFrame['Seriesname'], errors='coerce',format='%Y%m%d')强制转换。这对数字不能代表日期(认为'20100231',首先导入为int64的列)或字符串根本不代表数字(认为'2o1oo228',导入时为object的列)的拼写错误是可靠的。

此过程不稳健的是当列只包含数字,但一个字段为空时。然后read_table将整个列作为float64(而不是int64,它在numpy中没有缺失值)导入整个列,并且上面的转换会导致全部丢失,即使对于数据有意义的行也是如此。

有没有办法解决这个问题?

+0

你是什么意思的“没有转换”?你不能只是设置转换选项离开该列作为一个字符串? – BrenBarn

+0

@BrenBarn看到编辑,谢谢。 –

回答

0

最好的办法可能是完全避免float。通过指定dtype来预先将read_table中的数字转换为数字,并将该列保留为objectto_datetime按预期处理。

HT:BrenBarn在评论中。

相关问题