使用read_csv导入困难

时间:2017-08-18 09:24:01

标签: python pandas import

我有一个csv文件,格式如下:

0;2017-02-16 15:08:16;81,307877;;;;;;;

因此,分号作为分隔符,日期和时间以及带小数逗号的浮点数。最后还有一堆半冒号。

Pandas csv_read应该是一个很好的解决方案。然而,经过大量尝试后,我感到相当困难。我不明白如何处理文件末尾的;;;我不太清楚我是否理解csv_read在更详细的控制可能性方面是如何工作的。

对于经常使用csv_read的人来说,这必须是一个非常简单的问题......我希望如此。我已经花了很长时间才开始......

一个例子:

pd.read_csv(r'C:\Users\Henrik\PycharmProjects\Regforce\Kort_del_1.csv', 
encoding="latin", sep=';', decimal=',', usecols=[0, 1, 2, 3])

作为回报,我得到:

   ÿþ0  Unnamed: 1  Unnamed: 2  Unnamed: 3
0      NaN         NaN         NaN         NaN
1      NaN         NaN         NaN         NaN

我还尝试为每个列强制“强制”类型而没有结果...... ???

更新: 我找到了一篇有趣的帖子,http://pythonforengineers.com/website-visitors-part-2-dealing-with-corrupt-data/ ...所以我下载了HEX-reader,在输入文件的开头发现了一些奇怪的东西。这似乎是上表中“ÿþ0”背后的原因。如果我在Notebook中打开它就看不到它,但它肯定在文件中。

这可以成为文件中NaN的来源吗?我该如何处理?似乎read_csv能够识别列的存在,但我无法获得任何值......?

2 个答案:

答案 0 :(得分:2)

我会以这种方式使用read_csv

df = pd.read_csv('yourfile.csv', sep=';', header=None, decimal=',', usecols=[0,1,2])

所以阅读所有内容,因为你最后对你不感兴趣的分号,只考虑前三列。

编辑:感谢piRSquared评论,将decimal=','添加到a​​rgs。

答案 1 :(得分:0)

该问题被识别为与输入文件相关。我做了我应该做的事情:   - 创建一个与要导入的文件具有相同结构的新文件   - 测试

使用这样的文件,使用read_csv导入我花了不到一分钟的时间来设置和调整我的需求。

因此,问题转换为理解输入文件。有一些东西可以用HEX阅读器看到,否则看不到......但这是一个完全不同的主题。