熊猫解析日期并设置索引奇怪的行为

时间:2016-06-24 17:17:19

标签: python pandas io date-parsing

当我尝试同时解析日期列并将该列设置为索引时,我正在遇到一些奇怪的行为,同时从带有pandas的CSV中读取。

csv文件有一个丢弃标题和一个扔掉的索引列,如下所示(通过扔掉我的意思是我不想使用它们)

"","X.m..d..y","fizzBuzz"
"1","2/2/1984",0.02523659
"2","2/3/1984",-0.03692308
"3","2/6/1984",-0.01597444
"4","2/7/1984",-0.006493506
"5","2/8/1984",-0.0130719

现在,我可以轻松阅读df,然后使用以下代码段

设置索引
import pandas as pd
df = pd.read_csv('stackOverflow.csv',header=0,
                   names=['_throAwayindex','date','value'], usecols=['date','value'],
                  parse_dates=['date'] )
df = df.set_index('date')
df

完美输出所需的结果

               value
date                
1984-02-02  0.025237
1984-02-03 -0.036923
1984-02-06 -0.015974
1984-02-07 -0.006494
1984-02-08 -0.013072

但是当我尝试在read_csv调用中设置索引时,我得到一个奇怪的结果。这会错误地命名索引列

df = pd.read_csv('stackOverflow.csv',header=0,
                   names=['_throAwayindex','date','value'], usecols=['date','value'],
                  parse_dates=['date'], index_col=0 )
df
                   value
_throAwayindex          
2/2/1984        0.025237
2/3/1984       -0.036923
2/6/1984       -0.015974
2/7/1984       -0.006494
2/8/1984       -0.013072

这样做的一切都错了:

df = pd.read_csv('stackOverflow.csv',header=0,
                   names=['_throAwayindex','date','value'], usecols=['date','value'],
                  parse_dates=['date'], index_col=1 )
df
               date
date               
 0.025237  2/2/1984
-0.036923  2/3/1984
-0.015974  2/6/1984
-0.006494  2/7/1984
-0.013072  2/8/1984

我对正在发生的事情以及如何在read_csv电话中实现预期结果感兴趣,而无需第二次拨打set_index

1 个答案:

答案 0 :(得分:1)

index_col=0的策略适用于我(Python 3.5.1,pandas 0.18.1)。在使用已在0.18.1(commit)中修复的parse_datesusecols时,出现了一个错误。也许你正在运行旧版本?