pandas时间索引处理


前言

请添加图片描述

一、读数据,把日期做为索引列

import pandas as pd

if __name__ == '__main__':

    df = pd.read_excel('ih/data/0.xlsx', index_col=0).head()
    print(df)
    print(df.index)
    print(type(df.index[0]))

输出index里面单个时间类型是:timestamps.Timestamp。
在这里插入图片描述

二、提取时间戳到日期

代码:

import pandas as pd

if __name__ == '__main__':

    df = pd.read_excel('ih/data/0.xlsx', index_col=0).head()

    print(df.index[0])
    print(type(df.index[0]))
    day = pd.Period(df.index[0], 'd')
    print(day)
    print(type(day))

结果如下,我们只保留了日期信息,注意时间戳类型由timestamps.Timestamp转换到了period.Period。
在这里插入图片描述

三、将时间戳延后

在这里插入图片描述
我们想要将上面的日期,再加上时间信息,组成新的索引,访问数据。例如:访问 2016-12-16 09:35:00 这一分钟的数据。具体操作如下:

首先设置延迟时间:09:35:00,其类型是:datetime.timedelta。

import pandas as pd
import datetime

if __name__ == '__main__':

    delta = datetime.timedelta(hours=9, minutes=33, seconds=0)
    print(delta)
    print(type(delta))

在这里插入图片描述

当把日期和时间直接相加是会报错,因为datetime.timedelta 和 period.Period类型不匹配。
报错如下:
在这里插入图片描述

我们需要把 period.Period 再转换为 timestamps.Timestamp 类型,整体代码如下:

import pandas as pd
import datetime

if __name__ == '__main__':

    df = pd.read_excel('ih/data/0.xlsx', index_col=0).head()
    print(df)
    print()

    day = pd.Period(df.index[0], 'd')
    print(day)
    print(type(day))

    day = day.to_timestamp()
    print(day)
    print(type(day))

    delta = datetime.timedelta(hours=9, minutes=33, seconds=0)

    print("最终时间戳:", day + delta)
    print(type(day + delta))
    print(df.loc[day + delta])

能够正确获取某一分钟的数据:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大虾飞哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值