Python 将dateTime索引值转换为Numpy Datetimes

Python 将dateTime索引值转换为Numpy Datetimes,python,pandas,numpy,datetime,Python,Pandas,Numpy,Datetime,从datetimes作为索引的pandas数据框开始,我创建了两个列表: 所有行的日期时间 所有行的日期 我下面的代码可以工作,但速度很慢。有没有更快的方法?我尝试了多种方法,但都很慢 dateTimeFormat = '%Y-%m-%dT%H:%M:%S' barDates = [] barDateTimes = [] for numpyDatetime64 in bars.index.values: # 'bars' is a pandas dataframe dateTime

从datetimes作为索引的pandas数据框开始,我创建了两个列表:

  • 所有行的日期时间
  • 所有行的日期
我下面的代码可以工作,但速度很慢。有没有更快的方法?我尝试了多种方法,但都很慢

dateTimeFormat = '%Y-%m-%dT%H:%M:%S'
barDates = []
barDateTimes = []
for numpyDatetime64 in bars.index.values: # 'bars' is a pandas dataframe
    dateTime = datetime.datetime.strptime(str(numpyDatetime64).split('.')[0], dateTimeFormat)
    date = dateTime.date()
    barDateTimes.append(dateTime)
    barDates.append(date)
根据Andrej的建议,以下是输入数据帧的示例:

                            A         B        C  ...         T          U         V
dateTime                                          ...                               
2010-05-13 09:31:00   117.130   117.240   117.13  ...  121.2400   121.2500  172429.0
2010-05-13 09:32:00   117.180   117.220   117.16  ...  121.1800   121.2700   98480.0
2010-05-13 09:33:00   117.200   117.280   117.19  ...  121.2701   121.3100   41255.0
2010-05-13 09:34:00   117.200   117.220   117.01  ...  121.2700   121.3999  250893.0
2010-05-13 09:35:00   117.100   117.130   116.83  ...  121.2500   121.2505   69952.0
...                       ...       ...      ...  ...       ...        ...       ...
2019-10-04 15:56:00   294.330   294.560   294.33  ...  141.7713   141.7800   15407.0
2019-10-04 15:57:00   294.550   294.630   294.50  ...  141.7750   141.7900   16815.0
2019-10-04 15:58:00   294.515   294.520   294.40  ...  141.7950   141.8700   39316.0
2019-10-04 15:59:00   294.485   294.530   294.38  ...  141.8600   141.8800   46623.0
2019-10-04 16:00:00   294.515   294.515   294.31  ...  141.8500   141.9300   89639.0

以下代码可能会起作用:

将熊猫作为pd导入
ix=pd.日期\范围(start=“2010-05-13 09:31:00”,end=“2010-05-13 09:35:00”,freq='min')
九
DatetimeIndex(['2010-05-13 09:31:00','2010-05-13 09:32:00',
'2010-05-13 09:33:00', '2010-05-13 09:34:00',
'2010-05-13 09:35:00'],
dtype='datetime64[ns]',freq='T')
barDateTimes,barDates=ix.to_pydatetime().tolist(),ix.date.tolist())
巴达蒂,巴达蒂
([datetime.datetime(2010,5,13,9,31),
datetime.datetime(2010,5,13,9,32),
datetime.datetime(2010,5,13,9,33),
datetime.datetime(2010,5,13,9,34),
datetime.datetime(2010,5,13,9,35)],
[日期时间.日期(2010年5月13日),
日期时间。日期(2010年5月13日),
日期时间。日期(2010年5月13日),
日期时间。日期(2010年5月13日),
日期时间。日期(2010年5月13日)

你可能也想考虑一下你是否真的需要Python DATESTORE和熊猫时间戳。

< P>下面的代码可能会起作用:

将熊猫作为pd导入
ix=pd.日期\范围(start=“2010-05-13 09:31:00”,end=“2010-05-13 09:35:00”,freq='min')
九
DatetimeIndex(['2010-05-13 09:31:00','2010-05-13 09:32:00',
'2010-05-13 09:33:00', '2010-05-13 09:34:00',
'2010-05-13 09:35:00'],
dtype='datetime64[ns]',freq='T')
barDateTimes,barDates=ix.to_pydatetime().tolist(),ix.date.tolist())
巴达蒂,巴达蒂
([datetime.datetime(2010,5,13,9,31),
datetime.datetime(2010,5,13,9,32),
datetime.datetime(2010,5,13,9,33),
datetime.datetime(2010,5,13,9,34),
datetime.datetime(2010,5,13,9,35)],
[日期时间.日期(2010年5月13日),
日期时间。日期(2010年5月13日),
日期时间。日期(2010年5月13日),
日期时间。日期(2010年5月13日),
日期时间。日期(2010年5月13日)

你可能也想考虑一下你是否真的需要Python DATESTORE和熊猫时间戳。

< P>我们可以利用<代码> DT < /Case>访问器函数,这些功能非常适合在大熊猫中执行与时间相关的任务。由于日期变量被设置为数据帧中的索引,我们可以在数据帧上执行重置索引,或者将索引转换为pd.Series,如下所示:

import pandas as pd

dates = pd.Series(bars.index)
dates = dates.dt.strftime('%Y-%m-%dT%H:%M:%S')

barDates = dates.dt.date.tolist()
barDateTimes = dates.dt.strftime('%Y-%m-%dT%H:%M:%S').tolist()

希望这能给你一些想法

我们可以利用
.dt
访问器功能,这些功能非常方便在熊猫中执行与日期时间相关的任务。由于日期变量被设置为数据帧中的索引,我们可以在数据帧上执行重置索引,或者将索引转换为pd.Series,如下所示:

import pandas as pd

dates = pd.Series(bars.index)
dates = dates.dt.strftime('%Y-%m-%dT%H:%M:%S')

barDates = dates.dt.date.tolist()
barDateTimes = dates.dt.strftime('%Y-%m-%dT%H:%M:%S').tolist()

希望这能给你一些想法

您可以编辑您的问题并添加一些输入数据框的示例吗?也许您可以在数据帧内进行转换,然后在最后调用
.tolist()
。@AndrejKesely。是的,谢谢,我在上面添加了一个示例数据框。你能编辑你的问题并添加一些输入数据框的示例吗?也许您可以在数据帧内进行转换,然后在最后调用
.tolist()
。@AndrejKesely。是的,谢谢,我在上面添加了一个示例数据帧。