【问题标题】:Write Pandas Dataframe to CSV with a variable name in pathway在路径中使用变量名将 Pandas Dataframe 写入 CSV
【发布时间】:2018-06-11 07:31:27
【问题描述】:

我编写了一个 python 脚本,它接收一个文件并匹配另一个文件中的某些列。我想将此写入名为“[原始文件名]_matched”的csv。例如。我有一堆文件(xaa,xab,...),在每个文件上运行脚本后,我也会有(xaa_matched,xab_matched 等...)这是我根据这个解决方案尝试过的:@ 987654321@

import sys
import os
filename = sys.argv[1]
# some code 
path = r'/Users/mdong/dataScience/movie_representation/fuzzy_match_dir/'
input_file.to_csv(os.path.join(path,'match_' + filename), index = False)

但是,我得到了这个错误

Traceback (most recent call last):
  File "movie_matching.py", line 29, in <module>
    input_file.to_csv(os.path.join(path,filename), index = False)
  File "/Users/mdong/anaconda/lib/python3.6/site-packages/pandas/core/frame.py", line 1413, in to_csv
    formatter.save()
  File "/Users/mdong/anaconda/lib/python3.6/site-packages/pandas/io/formats/format.py", line 1568, in save
    compression=self.compression)
  File "/Users/mdong/anaconda/lib/python3.6/site-packages/pandas/io/common.py", line 382, in _get_handle
    f = open(path_or_buf, mode, errors='replace')
FileNotFoundError: [Errno 2] No such file or directory: '/Users/mdong/dataScience/movie_representation/fuzzy_match_dir/fuzzy_match_dir/xaa.csv'

我不确定为了排除故障出了什么问题,任何指针将不胜感激!

【问题讨论】:

  • 显而易见的事情是检查你的路径。你做到了吗?
  • 你的意思是检查目录是否存在?它没有,因为fuzzy_match_dir 在路径中被复制了两次,但我认为我没有正确使用os.path.join,或者这甚至是创建可变路径的最佳方法。
  • sys.argv[1]进来的值是多少?
  • 我从命令行传入一个 csv 文件,所以如果我调用 python3 movie_matching_cahl.py xaa,sys.argv[1] 将是 xaa。我正在尝试使用它,以便可以将输出写入目录中每个文件的 xaa_matched 之类的文件。

标签: pandas operating-system export-to-csv sys


【解决方案1】:

在这种情况下我会使用pathlib。

from pathlib import Path
p = Path('/Path/to/your/folder/')
input_file.to_csv(Path(p, 'match_' + filename + '.csv')), index=False)

我还会检查您的文件名变量是否符合您的预期。你也可以用 Pathlib 来做这件事。

>>> p = Path('/Path/To/Thing.csv')
>>> p.stem
'Thing'
>>> p.name
'Thing.csv'

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 2014-02-07
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多