DataFrame.to_csv抛出错误'[Errno 2] No such file or directory'
DataFrame.to_csv抛出错误'[Errno 2] No such file or directory'
我正在尝试将DataFrame写入.csv文件:
now = datetime.datetime.now() date = now.strftime("%Y-%m-%d") enrichedDataDir = "/export/market_data/temp" enrichedDataFile = enrichedDataDir + "/marketData_optam_" + date + ".csv" dbutils.fs.ls(enrichedDataDir) df.to_csv(enrichedDataFile, sep='; ')
这给我抛出了以下错误
IOError: [Errno 2] No such file or directory:
'/export/market_data/temp/marketData_optam_2018-10-12.csv'
但是当我执行
dbutils.fs.ls(enrichedDataDir) Out[72]: []
没有错误!当我进入目录层级(更高一级)时:
enrichedDataDir = "/export/market_data" dbutils.fs.ls(enrichedDataDir) Out[74]: [FileInfo(path=u'dbfs:/export/market_data/temp/', name=u'temp/', size=0L) FileInfo(path=u'dbfs:/export/market_data/update/', name=u'update/', size=0L)]
这也可以工作。这对我来说意味着我真的拥有我想要访问的所有文件夹。但我不知道为什么.to_csv
选项会抛出错误。我也检查了权限,一切正常!
当使用DataFrame.to_csv()将DataFrame保存为CSV文件时,有时会遇到错误'[Errno 2] No such file or directory'。这个错误的原因是指定的文件路径不存在或无法访问。
解决这个问题的方法是检查指定的文件路径是否正确,并确保路径指向一个存在的目录。如果路径是一个相对路径,可以尝试使用绝对路径来代替。另外,还要确保当前用户对该目录具有读写权限。
另外,还有一种常见的情况是,如果指定的文件路径包含特殊字符或空格,可能会导致文件路径无法正确解析。在这种情况下,可以尝试使用双引号或单引号将文件路径括起来,以避免解析错误。
以下是一个示例代码,演示了如何解决这个问题:
import pandas as pd # 创建一个DataFrame data = {'Name': ['Tom', 'Nick', 'John'], 'Age': [28, 32, 25], 'City': ['New York', 'Paris', 'London']} df = pd.DataFrame(data) # 将DataFrame保存为CSV文件 file_path = 'data.csv' # 此处为相对路径,如果使用绝对路径,请替换为实际路径 df.to_csv(file_path)
在上述示例中,如果当前工作目录下不存在名为'data.csv'的文件,就会抛出'[Errno 2] No such file or directory'错误。为了解决这个问题,可以将'file_path'修改为绝对路径,或者确保当前工作目录下存在'data.csv'文件。
总结起来,当使用DataFrame.to_csv()保存DataFrame为CSV文件时,如果遇到'[Errno 2] No such file or directory'错误,可以通过检查文件路径的正确性和权限,并确保文件路径中不包含特殊字符或空格来解决这个问题。
问题可能出现的原因是文件或目录不存在。解决方法是使用`os.makedirs`函数创建目录,并使用`open`函数创建文件,然后再使用`DataFrame.to_csv`将数据保存到文件中。以下是完整的解决方案:
from os import makedirs # 创建目录 makedirs(enrichedDataDir) # 创建文件并写入数据 with open(enrichedDataFile, 'w') as output_file: df.to_csv(output_file, sep='; ')
同时,还可以参考以下链接中的解决方案:
- [stackoverflow.com/a/12201952/10417531](https://stackoverflow.com/a/12201952/10417531)
- [stackoverflow.com/a/18758737/10417531](https://stackoverflow.com/a/18758737/10417531)
问题的原因是使用Microsoft Azure Datalake Store存储.csv文件时出现了错误。使用df.to_csv无法将文件写入Azure Datalake Store。
解决方法是将Pandas DataFrame更改为Spark DataFrame,并使用以下代码将其写入csv文件:
from pyspark.sql import * df = spark.createDataFrame(result,['CustomerId', 'SalesAmount'])
然后使用以下代码将其写入csv文件:
from pyspark.sql import * df.coalesce(2).write.format("csv").option("header", True).mode("overwrite").save(enrichedDataFile)
这样就解决了问题。