@chip的答案完全错过了两个关键字参数的含义。
- 名称 是只在必要时有没有头和要指定使用的列名,而不是整数索引等参数。
- usecols 应该在将整个Dataframe读入内存之前提供过滤器;如果使用得当,则读取后永远不需要删除列。
此解决方案纠正了这些怪异现象:
import pandas as pdfrom StringIO import StringIOcsv = r"""dummy,date,loc,xbar,20090101,a,1bar,20090102,a,3bar,20090103,a,5bar,20090101,b,1bar,20090102,b,3bar,20090103,b,5"""df = pd.read_csv(StringIO(csv), header=0, index_col=["date", "loc"], usecols=["date", "loc", "x"], parse_dates=["date"])
这给了我们:
xdate loc2009-01-01 a 12009-01-02 a 32009-01-03 a 52009-01-01 b 12009-01-02 b 32009-01-03 b 5



