2016-11-11 82 views
0

从cvs文件读取。如何从Pandas DateTime索引中删除时间值?

df = pd.read_csv(filename, sep=";", names=['DateTime','Open','High','Low','Close','Vol'], 
       parse_dates = [0], index_col = 'DateTime') 

输出数据:

      Open  High  Low Close 
DateTime              
2016-01-03 00:00:00+00:00 1.08701 1.08723 1.08451 1.08515 
2016-01-04 00:00:00+00:00 1.08701 1.09464 1.07811 1.08239 
2016-01-05 00:00:00+00:00 1.08238 1.08388 1.07106 1.07502 
2016-01-06 00:00:00+00:00 1.07504 1.07994 1.07185 1.07766 
2016-01-07 00:00:00+00:00 1.07767 1.09401 1.07710 1.09256 
2016-01-08 00:00:00+00:00 1.09255 1.09300 1.08030 1.09218 

如何从日期时间指数上方删除时间值?

另一个问题,我如何截断打开/高/低/接近6位小数的值?

回答

1

要截断日期时间,首先将对象获取到DateTime对象中,因为它会对此进行适当的处​​理。例如,在打印过程中也只会打印日期值随着时间始终为0

>>> c = pd.read_csv("a.csv", sep=",", names=['DateTime','Open','High','Low','Close','Vol']) 
>>> c 
        DateTime  Open  High  Low Close Vol 
0 2016-01-03 00:00:00+00:00 1.08701 1.08723 1.08451 1.08515 NaN 
1 2016-01-04 00:00:00+00:00 1.08701 1.09464 1.07811 1.08239 NaN 
2 2016-01-05 00:00:00+00:00 1.08238 1.08388 1.07106 1.07502 NaN 
3 2016-01-06 00:00:00+00:00 1.07504 1.07994 1.07185 1.07766 NaN 
4 2016-01-07 00:00:00+00:00 1.07767 1.09401 1.07710 1.09256 NaN 
5 2016-01-08 00:00:00+00:00 1.09255 1.09300 1.08030 1.09218 NaN 
>>> c.DateTime = pd.to_datetime(c.DateTime) 
>>> c 
    DateTime  Open  High  Low Close Vol 
0 2016-01-03 1.08701 1.08723 1.08451 1.08515 NaN 
1 2016-01-04 1.08701 1.09464 1.07811 1.08239 NaN 
2 2016-01-05 1.08238 1.08388 1.07106 1.07502 NaN 
3 2016-01-06 1.07504 1.07994 1.07185 1.07766 NaN 
4 2016-01-07 1.07767 1.09401 1.07710 1.09256 NaN 
5 2016-01-08 1.09255 1.09300 1.08030 1.09218 NaN 

这通常会节省时间也,如果它存在,它只是没有在这里表现出来,因为时间值0.要获得日期,请执行以下操作:

>>> c.DateTime = c.DateTime.dt.date 
>>> c.DateTime[0] 
datetime.date(2016, 1, 3) 
+0

如果我有DateTime作为索引,我该如何做? –

+0

我相信to_datetime也应该处理DateTimeIndex,并将它们转换为datetime对象。但我可能错了。如果您需要更多帮助,请提供示例csv以更好地理解(我从来没有使用过DateTimeIndex) – AbdealiJK