我正在尝试使用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()不接受任何关键字参数 最初我得到错误TypeError:必须是可转换为缓冲区,而不是DataFrame,但我不记得我是如何摆脱该错误。
我查了一下StringIO文档和其他网站,包括: https://newcircle.com/bookshelf/python_fundamentals_tutorial/working_with_files但是我被卡住了!
答案 0 :(得分:2)
您在错误的位置关闭了括号:
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=',')