Python 正在将无头CSV读取到数据帧和分析日期

Python 正在将无头CSV读取到数据帧和分析日期,python,csv,pandas,dataframe,Python,Csv,Pandas,Dataframe,我正在尝试将类似于下面的CSV文件读取到pandas.DataFrame: 2011 1 10 AAPL Buy 1500 2011 1 13 AAPL Sell 1500 2011 1 13 IBM Buy 4000 2011 1 26 GOOG Buy 1000 数据没有列标题。读取该文件时,我还希望将前3列解析为“日期”列。以下是我尝试的: import pandas pandas.r

我正在尝试将类似于下面的CSV文件读取到pandas.DataFrame:

2011    1   10  AAPL    Buy     1500
2011    1   13  AAPL    Sell    1500
2011    1   13  IBM     Buy     4000
2011    1   26  GOOG    Buy     1000
数据没有列标题。读取该文件时,我还希望将前3列解析为“日期”列。以下是我尝试的:

import pandas
pandas.read_csv(fileName,
                header = None,
                names = ('Date', 'Symbol', 'Side', 'Quantity'),
                parse_dates = {'Date' : [0, 1, 2]})
这引起:

NotImplementedError: file structure not yet supported
我试过:

pandas.read_csv(fileName,
                header = None,
                names = ('Year', 'Month', 'Day', 'Symbol', 'Side', 'Quantity'),
                parse_dates = {'Date' : ['Year', 'Month', 'Day']})
这两种方法都不起作用,引发了同样的异常

因此,我最终通过以下方式完成了对该文件的读取:

orders = pandas.read_csv(fileName,
                         header = None,
                         parse_dates = {'Date' : [0, 1, 2]})
orders.rename(columns = {3: 'Symbol', 4 : 'Side', 5: 'Quantity'})
有没有一种方法可以通过将列名传递给名称来进行第一次调用?为什么会提出这一例外? 在中报告了类似的问题,但除了相同的解决方法外,我看不到任何解决方案

我正在使用pandas 0.18.1,据我所知,它是最新版本。

尝试添加:

sep='\s+'

参数

演示:


谢谢@MaxU。该文件的实际结构是:
2011,1,10,AAPL,Buy,1500,2011,1,13,AAPL,Sell,1500,2011,1,13,IBM,Buy,4000,2011,1,26,GOOG,Buy,1000,
因此,最终我添加了虚拟列
名称=('Year','Month','Day','Symbol','Side','Quantity','bla因为逗号,它起作用了。不过,例外情况可能更清楚一些。。
delim_whitespace=True
In [7]: %paste
(pd.read_csv(fileName, sep='\s+', header = None,
             names = ('Year', 'Month', 'Day', 'Symbol', 'Side', 'Quantity'),
             parse_dates = {'Date' : ['Year', 'Month', 'Day']})
)
## -- End pasted text --
Out[7]:
        Date Symbol  Side  Quantity
0 2011-01-10   AAPL   Buy      1500
1 2011-01-13   AAPL  Sell      1500
2 2011-01-13    IBM   Buy      4000
3 2011-01-26   GOOG   Buy      1000

In [8]: %paste
(pd.read_csv(fileName, delim_whitespace=True, header = None,
             names = ('Year', 'Month', 'Day', 'Symbol', 'Side', 'Quantity'),
             parse_dates = {'Date' : ['Year', 'Month', 'Day']})
)
## -- End pasted text --
Out[8]:
        Date Symbol  Side  Quantity
0 2011-01-10   AAPL   Buy      1500
1 2011-01-13   AAPL  Sell      1500
2 2011-01-13    IBM   Buy      4000
3 2011-01-26   GOOG   Buy      1000