【发布时间】:2016-06-24 17:17:18
【问题描述】:
当我尝试解析日期列并将该列设置为索引,同时使用 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,然后使用以下 sn-p 设置索引
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
我对正在发生的事情以及如何在没有第二次调用set_index 的情况下仅通过read_csv 调用实现预期结果感兴趣。
【问题讨论】:
-
index_col=0的策略对我有用(Python 3.5.1,pandas 0.18.1)。使用parse_dates和usecols时出现了一个错误,该错误已在 0.18.1 (github.com/pydata/pandas/commit/…) 中修复,也许您运行的是旧版本? -
就是这样。升级,它工作正常。谢谢。如果您发布答案,我可以将其标记为已关闭
标签: python pandas io date-parsing