首页 > 解决方案 > python/pandas 从开始日期+时间,创建日期时间索引

问题描述

目前我有一个如下所示的数据框:

df = 
     Open    High     Low   Close  TotalVolume
0  113.40  113.54  113.40  113.54         7237
1  113.54  113.58  113.52  113.57        10099
2  113.59  113.81  113.52  113.78        13827
3  113.76  113.94  113.75  113.92        16129
4  113.91  114.01  113.88  113.97        27052
5  113.97  114.11  113.92  114.01        24925
6  114.00  114.15  113.99  114.04        13461
7  114.06  114.14  113.94  113.94        10702
8  113.92  113.99  113.86  113.99         5538
9  113.96  113.96  113.85  113.86        14000

它不一定是日期时间索引,但我觉得它是最简单的。从这里我有一个遵循这种格式的变量 startDate startDate = "03-20-2018t14:00"

从这里,这是分钟数据,要运行另一个程序,格式必须遵循这个,但这是我希望的最终结果:

updated_df =
Date          Time     Open    High     Low   Close  TotalVolume
03/20/2018   14:00   113.40  113.54  113.40  113.54         7237
03/20/2018   14:01   113.54  113.58  113.52  113.57        10099
03/20/2018   14:02   113.59  113.81  113.52  113.78        13827
03/20/2018   14:03   113.76  113.94  113.75  113.92        16129
03/20/2018   14:04   113.91  114.01  113.88  113.97        27052
03/20/2018   14:05   113.97  114.11  113.92  114.01        24925
03/20/2018   14:06   114.00  114.15  113.99  114.04        13461
03/20/2018   14:07   114.06  114.14  113.94  113.94        10702
03/20/2018   14:08   113.92  113.99  113.86  113.99         5538
03/20/2018   14:09   113.96  113.96  113.85  113.86        14000

标签: pythonpandasdataframe

解决方案


您需要将pandas.date_range()start,periodsfreq参数一起使用。

df['datetime'] = pd.date_range(start='03-20-2018t14:00', periods=len(df), freq="1min")

或者,如果您希望将它们分开,您可以从以下内容中提取date和提取:timeDatetimeIndex

datetime_col = pd.date_range(start='03-20-2018t14:00', periods=len(df), freq="1min")
df['Date'] = datetime_col.date
df['Time'] = datetime_col.time

有关详细信息,请参阅文档

输出:

         Date      Time    Open    High     Low   Close  TotalVolume
0  2018-03-20  14:00:00  113.40  113.54  113.40  113.54         7237
1  2018-03-20  14:01:00  113.54  113.58  113.52  113.57        10099
2  2018-03-20  14:02:00  113.59  113.81  113.52  113.78        13827
3  2018-03-20  14:03:00  113.76  113.94  113.75  113.92        16129
4  2018-03-20  14:04:00  113.91  114.01  113.88  113.97        27052
5  2018-03-20  14:05:00  113.97  114.11  113.92  114.01        24925
6  2018-03-20  14:06:00  114.00  114.15  113.99  114.04        13461
7  2018-03-20  14:07:00  114.06  114.14  113.94  113.94        10702
8  2018-03-20  14:08:00  113.92  113.99  113.86  113.99         5538
9  2018-03-20  14:09:00  113.96  113.96  113.85  113.86        14000

推荐阅读