本文共 1598 字,大约阅读时间需要 5 分钟。
在Pandas中调整时间序列的开始和结束日期
当你需要对Pandas中的时间序列进行重采样并调整其时间范围时,可以通过resample()函数与date_range()函数的配合实现。以下是详细的操作步骤和代码示例
确保你已安装并导入了以下库
import pandas as pdfrom datetime import datetime, timedelta
首先,创建一个包含日期和值的时间序列数据框
# 创建时间索引dates = [datetime(2023, i, j) for i in range(1, 13) for j in range(1, 31)]# 创建值列表values = list(range(len(dates)))# 创建数据框df = pd.DataFrame({'date': dates, 'value': values})# 将日期列设置为索引df.set_index('date', inplace=True) 接下来,使用resample()函数进行重采样,并指定新的开始和结束日期
# 指定新的开始和结束日期start_date = datetime(2022, 1, 1)end_date = datetime(2023, 12, 31)# 使用新的开始和结束日期进行重采样resampled_df = df.resample('D', loffset=timedelta(days=-start_date.day)).sum().loc[start_date:end_date] resample()函数:用于将原始数据按照指定的频率(如每天‘D’)进行重采样。loffset参数用于调整重采样后的起始日期
.loc[start_date:end_date]:用于从指定的开始和结束日期中筛选重采样后的数据
以下是完整的代码示例
import pandas as pdfrom datetime import datetime, timedelta# 创建时间索引dates = [datetime(2023, i, j) for i in range(1, 13) for j in range(1, 31)]# 创建值列表values = list(range(len(dates)))# 创建数据框df = pd.DataFrame({'date': dates, 'value': values})# 将日期列设置为索引df.set_index('date', inplace=True)# 指定新的开始和结束日期start_date = datetime(2022, 1, 1)end_date = datetime(2023, 12, 31)# 使用新的开始和结束日期进行重采样resampled_df = df.resample('D', loffset=timedelta(days=-start_date.day)).sum().loc[start_date:end_date] 在这个示例中:
resample('D')将数据按照每日频率进行重采样loffset=timedelta(days=-start_date.day)调整了重采样后的起始日期.loc[start_date:end_date]筛选了重采样后的数据通过这种方法,你可以轻松地调整Pandas中的时间序列数据的开始和结束日期,从而满足不同的分析需求
如果需要进一步调整重采样后的数据范围,可以参考Pandas官方文档获取更多参数和功能说明
转载地址:http://nnvfk.baihongyu.com/