Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中为数据帧获取时间索引_Python_Pandas_Dataframe_Financial_Datetimeindex - Fatal编程技术网

在python中为数据帧获取时间索引

在python中为数据帧获取时间索引,python,pandas,dataframe,financial,datetimeindex,Python,Pandas,Dataframe,Financial,Datetimeindex,我在为我的熊猫数据帧获取正确的时间索引时遇到了一些问题 import pandas as pd from datetime import strptime import numpy as np stockdata = pd.read_csv("/home/stff/symbol_2012-02.csv", parse_dates =[[0,1,2]]) stockdata.columns = ['date_time','ticker','exch','salcond','vol','price

我在为我的熊猫数据帧获取正确的时间索引时遇到了一些问题

import pandas as pd
from datetime import strptime
import numpy as np

stockdata = pd.read_csv("/home/stff/symbol_2012-02.csv", parse_dates =[[0,1,2]])
stockdata.columns = ['date_time','ticker','exch','salcond','vol','price','stopstockind','corrind','seqnum','source','trf','symroot','symsuffix']
我认为问题在于时间在前三列:年/月/日、小时/分钟/秒、毫秒。此外,如果在中午之前,则小时/分钟/秒列会删除第一个零

print(stockdata['date_time'][0])
20120201 41206 300

print(stockdata['date_time'][50000])
20120201 151117 770

理想情况下,我想定义我自己的函数,该函数可以由read_csv函数中的converters参数调用。

假设您有一个如下所示的
csv
文件:

date,time,milliseconds,value
20120201,41206,300,1
20120201,151117,770,2
import datetime as dt
import pandas as pd
parse = lambda x: dt.datetime.strptime(x, '%Y%m%d %H%M%S %f')
df = pd.read_csv('test.csv', parse_dates=[['date', 'time', 'milliseconds']],
                 index_col=0, date_parser=parse)
然后使用
read\u csv
方法的
parse\u dates
index\u cols
date\u parser
参数,可以构建一个
pandas
数据帧
,时间索引如下:

date,time,milliseconds,value
20120201,41206,300,1
20120201,151117,770,2
import datetime as dt
import pandas as pd
parse = lambda x: dt.datetime.strptime(x, '%Y%m%d %H%M%S %f')
df = pd.read_csv('test.csv', parse_dates=[['date', 'time', 'milliseconds']],
                 index_col=0, date_parser=parse)
这将产生:

                            value
date_time_milliseconds           
2012-02-01 04:12:06.300000      1
2012-02-01 15:11:17.770000      2
df.index

<class 'pandas.tseries.index.DatetimeIndex'>
[2012-02-01 04:12:06.300000, 2012-02-01 15:11:17.770000]
Length: 2, Freq: None, Timezone: None

[2012-02-01 04:12:06.300000, 2012-02-01 15:11:17.770000]
长度:2,频率:无,时区:无

这个答案基于一个类似的解决方案。

我想缺少零并不会使%H出错