【问题标题】:pandas read_csv path issue熊猫 read_csv 路径问题
【发布时间】:2018-04-01 04:58:02
【问题描述】:

如果我去,我可以轻松读取 csv 文件:

pd.read_csv(r'C:\\yourpath\yourcsvfile.csv')

但我想尝试路径变量而不是硬编码我的路径。所以我尝试了:

processed_data_path=os.path.join(os.path.pardir,'data','processed')
train_file_path=os.path.abspath(os.path.join(processed_data_path,'train.csv'))
test_file_path=os.path.abspath(os.path.join(processed_data_path,'test.csv'))

打印结果是:

C:\yourpath\train.csv
C:\yourpath\test.csv

所以看起来没问题。但是当我尝试下面的代码时,它会抛出一个文件不存在错误:

train_df = pd.read_csv(train_file_path)

问题出在哪里?

【问题讨论】:

  • 忘了提到我正在使用带有 python 3.6 的 windows
  • 显示您分配给train_file_path的值

标签: python pandas


【解决方案1】:

我会使用 pathlib 模块,它非常方便,并且现代 Pandas 版本原生支持:

演示:

try:
    from pathlib import Path
except ImportError:             # Python 2
    from pathlib2 import Path

In [49]: p = Path('D:\\')

使用重载运算符/ 连接路径:

In [50]: f = p / 'temp' / '.data' / '1.txt'

In [51]: f
Out[51]: WindowsPath('D:/temp/.data/1.txt')

In [52]: pd.read_csv(f)
Out[52]:
        Val
0  0.120000
1  0.320000
2  0.439999
3  0.560000
4  0.599999

【讨论】:

    【解决方案2】:

    也许在调用解析器之前添加检查将帮助您识别问题 在解析之前检查路径以确保我们不会遇到异常,这始终是一个好习惯:

    if os.path.exists(train_file_path):
               train_df = pd.read_csv(train_file_path)
    else:
               print(train_file_path)
    

    【讨论】:

      【解决方案3】:

      对于 VSCode 用户:问题可能是 VSCode 将当前工作目录设置为工作区根文件夹。我的解决方案是:

      将当前工作目录设置为您当时正在执行的任何文件:

      文件 > 首选项 > 设置 > Python > 数据科学 > 在文件目录中执行

      感谢用户 brch:Python in VSCode: Set working directory to python file's path everytime

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-27
        • 2016-03-30
        • 2019-07-12
        • 2017-08-02
        • 1970-01-01
        • 2012-11-21
        • 2018-07-19
        • 2019-12-31
        相关资源
        最近更新 更多