将 StringIO 与 pandas.read_csv 关键字参数一起使用
Using StringIO with pandas.read_csv keyword arguments
我正在尝试使用 pandas.read_csv
读取 csv 文件。我很困惑,因为代码在手动输入 csv 时有效。
from six.moves import cStringIO as StringIO
Companies="""
Top, Equipment, Users, Neither
Company 1, 0, 0, 43
Company 2, 0, 0, 32
Company 3, 1, 3, 20
Company 4, 9, 3, 9
Company 5, 8, 7, 3
Company 6, 2, 7, 8
Company 7, 5, 2, 1
Company 8, 1, 4, 1
Company 9, 5, 1, 0
Company 10, 1, 1, 3
Company 11, 2, 2, 0
Company 12, 0, 1, 1
Company 13, 2, 0, 0
Company 14, 1, 0, 0
Company 15, 1, 0, 0
Company 16, 0, 1, 0
"""
使用:
df = pd.read_csv(StringIO(Companies),
skiprows=1,
skipinitialspace=True,
engine='python')
^^ 以上有效!
但是,当我尝试从单独的 csv 中读取数据时,我不断收到错误消息。
我试过了:
df = pd.read_csv(StringIO('MYDATA.csv', nrows=17, skiprows=1,skipinitialspace=True, delimiter=','))
并得到错误 TypeError: StringIO() takes no keyword arguments
最初我收到错误 TypeError: Must be Convertible to a buffer, not DataFrame,但我不记得我是如何摆脱这个错误的。
我查阅了 StringIO 文档和其他网站,包括:
https://newcircle.com/bookshelf/python_fundamentals_tutorial/working_with_files 但我卡住了!
您在错误的位置关闭了括号:
df = pd.read_csv(StringIO('MYDATA.csv', nrows=17, skiprows=1,skipinitialspace=True, delimiter=','))
# ^ ^ not closed here
您将移动右括号以结束 StringIO()
调用并保留 pd.read_csv()
调用的关键字参数:
df = pd.read_csv(StringIO('MYDATA.csv'), nrows=17, skiprows=1,skipinitialspace=True, delimiter=',')
请注意,StringIO('MYDATA.csv')
创建了一个内容为 MYDATA.csv
的内存文件;它不会 打开具有该文件名的文件。如果你想在你的文件系统上打开一个名为 MYDATA.csv
的文件,你需要 停止 StringIO
调用:
df = pd.read_csv('MYDATA.csv', nrows=17, skiprows=1, skipinitialspace=True, delimiter=',')
我正在尝试使用 pandas.read_csv
读取 csv 文件。我很困惑,因为代码在手动输入 csv 时有效。
from six.moves import cStringIO as StringIO
Companies="""
Top, Equipment, Users, Neither
Company 1, 0, 0, 43
Company 2, 0, 0, 32
Company 3, 1, 3, 20
Company 4, 9, 3, 9
Company 5, 8, 7, 3
Company 6, 2, 7, 8
Company 7, 5, 2, 1
Company 8, 1, 4, 1
Company 9, 5, 1, 0
Company 10, 1, 1, 3
Company 11, 2, 2, 0
Company 12, 0, 1, 1
Company 13, 2, 0, 0
Company 14, 1, 0, 0
Company 15, 1, 0, 0
Company 16, 0, 1, 0
"""
使用:
df = pd.read_csv(StringIO(Companies),
skiprows=1,
skipinitialspace=True,
engine='python')
^^ 以上有效!
但是,当我尝试从单独的 csv 中读取数据时,我不断收到错误消息。
我试过了:
df = pd.read_csv(StringIO('MYDATA.csv', nrows=17, skiprows=1,skipinitialspace=True, delimiter=','))
并得到错误 TypeError: StringIO() takes no keyword arguments 最初我收到错误 TypeError: Must be Convertible to a buffer, not DataFrame,但我不记得我是如何摆脱这个错误的。
我查阅了 StringIO 文档和其他网站,包括: https://newcircle.com/bookshelf/python_fundamentals_tutorial/working_with_files 但我卡住了!
您在错误的位置关闭了括号:
df = pd.read_csv(StringIO('MYDATA.csv', nrows=17, skiprows=1,skipinitialspace=True, delimiter=','))
# ^ ^ not closed here
您将移动右括号以结束 StringIO()
调用并保留 pd.read_csv()
调用的关键字参数:
df = pd.read_csv(StringIO('MYDATA.csv'), nrows=17, skiprows=1,skipinitialspace=True, delimiter=',')
请注意,StringIO('MYDATA.csv')
创建了一个内容为 MYDATA.csv
的内存文件;它不会 打开具有该文件名的文件。如果你想在你的文件系统上打开一个名为 MYDATA.csv
的文件,你需要 停止 StringIO
调用:
df = pd.read_csv('MYDATA.csv', nrows=17, skiprows=1, skipinitialspace=True, delimiter=',')