【发布时间】:2016-08-04 22:28:29
【问题描述】:
我有一些大型 csv 和 xlsx 文件,我需要为其设置 pandas DataFrames。我有在目录中定位这些文件的代码(打印时,这些显示正确的路径名)。然后将这些路径传递给一个帮助函数,该函数旨在为文件设置所需的 DataFrame,然后将数据传递给其他函数进行一些操作。一旦完成,我打算将数据写入文件(通过加载模板、将数据写入模板并保存该文件)。
我目前有如下代码:
import pandas
# some set-up functions (which work; verified using print statements)
def createDataFrame(filename):
if filename.endswith('.csv'):
df = pandas.read_csv(StringIO(filename), skip_blank_lines=True, index_col=False,
encoding="utf-8", skipinitialspace=True)
当我尝试print(df) 时,我得到:
空数据框
列:[a.csv]
索引:[]
print(StringIO(filename)) 给了我:
<_io.stringio>
但是,当我在函数中省略 filename 周围的 StringIO() 时,我会收到此错误:
OSError: 文件 b'a.csv' 不存在
我能找到这方面信息的所有地方要么只是说import and start using,要么谈论使用read_csv()而不是from_csv()(from this question,这在这里不是很有帮助),并且甚至the current pandas docs 基本上都说应该像把文件传给pandas.read_csv() 一样简单。
1) 我已检查我是否拥有完全权限,并且该文件有效且存在。为什么我会收到 OSError?
2) 当我使用StringIO() 时,为什么我仍然在这里得到一个空的DataFrame?我该如何解决这个问题?
提前致谢。
【问题讨论】:
-
为什么需要
StringIO?没有这个就不行吗?即pandas.read_csv(filename,.....) -
正如我在问题中发布的那样,如果没有 StringIO,我会收到 OSError。我一直无法发现原因,并且希望任何可以解决该问题的指针(然后也许一切都会奏效)
标签: csv python-3.x pandas dataframe