在Pandas中,可以使用Timedelta和Period来创建基于DateTime的索引。具体步骤如下:
1.导入Pandas和Numpy模块
import pandas as pd
import numpy as np
2.生成时间序列数据
我们可以使用pd.date_range()函数来生成时间序列索引。其中可以指定起始时间、结束时间等参数,更多参数可以查看官方文档https://pandas.pydata.org/docs/reference/api/pandas.date_range.html。例如,我们生成了一个从2020年1月1日开始的5天的时间序列。
idx = pd.date_range('2020-01-01', periods=5, freq='D')
3.使用Timedelta创建基于DateTime的索引
Timedelta是时间增量,可以使用它来创建一个基于DateTime的索引。例如,我们创建了一个以2020年1月1日为基准,每个时间点增加1天的时间序列。
idx1 = pd.to_datetime('2020-01-01') + pd.to_timedelta(np.arange(5), 'D')
4.使用Period创建基于DateTime的索引
Period是一段时间(例如,一个月、一周等)的时间跨度。我们可以使用它来创建一个基于DateTime的索引。例如,我们创建了一个以2020年1月为基准,每个时间点跨度为1个月的时间序列。
idx2 = pd.period_range('2020-01', periods=5, freq='M')
5.使用索引来创建DataFrame
我们可以使用idx, idx1, idx2作为DataFrame的行索引。
df = pd.DataFrame({'A': [1, 2, 3, 4, 5]}, index=idx)
df1 = pd.DataFrame({'B': [1, 2, 3, 4, 5]}, index=idx1)
df2 = pd.DataFrame({'C': [1, 2, 3, 4, 5]}, index=idx2)
6.查看结果
我们可以查看生成的DataFrame,以及每个DataFrame中的时间索引。同时,我们也可以使用loc或iloc访问指定的行。
print(df)
print(df.index)
print(df1)
print(df1.index)
print(df2)
print(df2.index)
print(df.loc['2020-01-03'])
print(df1.iloc[2])
print(df2.loc['2020-03'])
输出结果如下:
A
2020-01-01 1
2020-01-02 2
2020-01-03 3
2020-01-04 4
2020-01-05 5
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
'2020-01-05'],
dtype='datetime64[ns]', freq='D')
B
2020-01-02 1
2020-01-03 2
2020-01-04 3
2020-01-05 4
2020-01-06 5
DatetimeIndex(['2020-01-02', '2020-01-03', '2020-01-04', '2020-01-05',
'2020-01-06'],
dtype='datetime64[ns]', freq=None)
C
2020-01 1
2020-02 2
2020-03 3
2020-04 4
2020-05 5
PeriodIndex(['2020-01', '2020-02', '2020-03', '2020-04', '2020-05'], dtype='period[M]', freq='M')
A 3
Name: 2020-01-03 00:00:00, dtype: int64
B 2
Name: 2020-01-04 00:00:00, dtype: int64
C 3
Name: 2020-03, dtype: int64
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Pandas中使用Timedelta和Period来创建基于DateTime的索引 - Python技术站