我的代码如下:
import pandas as pd
import numpy as np
df = pd.read_csv("path/to/my/infile.csv")
df = df.sort_values(['distance', 'time'])
df.to_csv("path/to/my/outfile.csv")
此代码成功读取infile.csv(3GB csv文件),对它进行排序,但在尝试写入outfile.csv时失败,并出现以下错误:
OSError Traceback (most recent call last)
<ipython-input-10-3a5c8279658d> in <module>
----> 1 df.to_csv('/Users/joaomatos/Desktop/cluster22_sorted_training.csv',index=False)
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/frame.py in to_csv(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, compression, quoting, quotechar, line_terminator, chunksize, tupleize_cols, date_format, doublequote, escapechar, decimal)
1743 doublequote=doublequote,
1744 escapechar=escapechar, decimal=decimal)
-> 1745 formatter.save()
1746
1747 if path_or_buf is None:
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/formats/csvs.py in save(self)
164 encoding=encoding,
165 compression=self.compression)
--> 166 f.write(buf)
167 f.close()
168 for _fh in handles:
OSError: [Errno 22] Invalid argument
我的问题是为什么?
谢谢你的帮忙
5条答案
按热度按时间mjqavswn1#
在探索了很多选项后,包括将pandas库更新到最新版本(截至今天的1. 2. 4),将引擎改为“python”或“c”,调试等,我终于发现了问题所在:
我将我的CSV文件存储在一个文件夹中,该文件夹不断与OneDrive实时同步。
是的!我发现托盘图标变得疯狂,OneDrive正在消耗资源,同时我正在对我的宠物项目进行算法交易回测。我暂停了同步,然后它再也没有失败过!!
我猜您也可以从OneDrive中排除该文件夹,或者简单地更改CSV存储/写入/访问的位置。
snvhrwxg2#
我只是有一个类似的问题,我正在使用反斜杠
\
,这在过去通常是有效的,但这一次我不得不使用/
代替,这是非常奇怪的,但它的工作。mzillmmw3#
显然,这个问题是由一个已知的错误报告here与以前版本的Pandas有关。我所要做的就是
pip3 install --upgrade pandas
,然后重新启动计算机。nkoocmlb4#
在我的情况下(在外部硬盘驱动器上工作),一旦我指定了绝对路径,而不是相对路径,它就工作了。
lg40wkob5#
只需删除“path/to/my/”中的任何文件,或尝试:
如果文件不存在:pd.to_csv(文件名)否则:打印机“警告:此文件已存在!'