我有一个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能够识别列的存在,但我无法获得任何值......?
答案 0 :(得分:2)
我会以这种方式使用read_csv
:
df = pd.read_csv('yourfile.csv', sep=';', header=None, decimal=',', usecols=[0,1,2])
所以阅读所有内容,因为你最后对你不感兴趣的分号,只考虑前三列。
编辑:感谢piRSquared评论,将decimal=','
添加到args。
答案 1 :(得分:0)
该问题被识别为与输入文件相关。我做了我应该做的事情: - 创建一个与要导入的文件具有相同结构的新文件 - 测试
使用这样的文件,使用read_csv导入我花了不到一分钟的时间来设置和调整我的需求。
因此,问题转换为理解输入文件。有一些东西可以用HEX阅读器看到,否则看不到......但这是一个完全不同的主题。