数据处理中关于时间的相关操作

数据处理中关于时间的相关操作

北京时间与世界时间相互转换

在科研中我们获取的数据往往是北京时间,有时候需要将北京时间转换为世界时间,简单理解,世界UTC时间比北京时间快8个小时,即北京时=世界时+8,python中datetime可以轻松对这两种时间进行转换。
首先,导入相关库

import pandas as pd
import numpy as np
from datetime import datetime, timedelta     # 采用此函数
import time

接着,导入数据,我的数据前五列分别是年份、月份、日期、小时、分钟,频率为30分钟
首先利用pandas的PeriodIndex模块将前五列进行合并

df = pd.read_excel("C:/Users/62692/Desktop/时间.xlsx")
periods = pd.PeriodIndex(year=df.iloc[:,0].astype(np.int64),month=df.iloc[:,1].astype(np.int64),day=df.iloc[:,2].astype(np.int64),hour= df.iloc[:,3].astype(np.int64),minute=df.iloc[:,4].astype(np.int64),freq='30T')
periods

在这里插入图片描述
接着,将北京时间转为世界UTC时间

utc_time = periods - timedelta(hours=8)              # 世界时=北京时-8

结果如下:
在这里插入图片描述
最后将世界时进行切割,分为5列,并进行合并

pd.concat([pd.Series(utc_time).dt.year, pd.Series(utc_time).dt.month,pd.Series(utc_time).dt.day,pd.Series(utc_time).dt.hour,pd.Series(utc_time).dt.minute], axis=1)

时间是数值型

方法一:

tmp['时间'] = pd.to_datetime(tmp['ymd'].values,format='%Y%m%d')
tmp.set_index(tmp['时间'],inplace=True)

方法二
在这里插入图片描述

# 将其转化为object,然后索引出年月日
data1['TIMESTAMP_START'].astype(np.int64)
Year = []
for i in range(0,len(data1['TIMESTAMP_START'])):
    print(data1['TIMESTAMP_START'][i])
    Year.append(str(data1['TIMESTAMP_START'][i])[0:4])
month = []
for i in range(0,len(data1['TIMESTAMP_START'])):
    print(data1['TIMESTAMP_START'][i])
    month.append(str(data1['TIMESTAMP_START'][i])[4:6])

day = []
for i in range(0,len(data1['TIMESTAMP_START'])):
    print(data1['TIMESTAMP_START'][i])
    day.append(str(data1['TIMESTAMP_START'][i])[6:8])
hour = []
for i in range(0,len(data1['TIMESTAMP_START'])):
    print(data1['TIMESTAMP_START'][i])
    hour.append(str(data1['TIMESTAMP_START'][i])[8:10])


min = []
for i in range(0,len(data1['TIMESTAMP_START'])):
    print(data1['TIMESTAMP_START'][i])
    min.append(str(data1['TIMESTAMP_START'][i])[10:12])


Year = pd.DataFrame(np.array(Year))
month = pd.DataFrame(np.array(month))
day = pd.DataFrame(np.array(day))
hour = pd.DataFrame(np.array(hour))
min = pd.DataFrame(np.array(min))

data1['小时'] = hour
data1['分钟'] = min
data1['小时'] = data1['小时'].astype(np.float32)
data1['分钟'] = data1['分钟'].astype(np.float32)


data1= data1.iloc[:,:].reset_index(drop=True)
Time = []
for i in range(0,len(data1['TIMESTAMP_START'])):
    print(data1['TIMESTAMP_START'][i])
    Time.append(str(data1['TIMESTAMP_START'][i])[:-2])
Time = pd.DataFrame(np.array(Time))
data1['start_time'] = Time
data1 = data10_16.iloc[:,:].reset_index(drop=True)
data1['start_time'] = pd.to_datetime(data1['start_time']) # 将时间格式调整为标准时间格式


data = data1
year = pd.Series(pd.to_datetime(data1['start_time'])).dt.year
month = pd.Series(pd.to_datetime(data1['start_time'])).dt.month
day = pd.Series(pd.to_datetime(data1['start_time'])).dt.day
hour = pd.Series(pd.to_datetime(data1['start_time'])).dt.hour
minute = pd.Series(pd.to_datetime(data1['start_time'])).dt.minute
data['year'] = year
data['month'] = month
data['day'] = day
data['hour'] = hour
data['minute'] = minute


pd.concat([pd.Series(pd.to_datetime(data['start_time'])).dt.year,pd.Series(pd.to_datetime(data['start_time'])).dt.month,pd.Series(pd.to_datetime(data['start_time'])).dt.day,pd.Series(pd.to_datetime(data['start_time'])).dt.hour,pd.Series(pd.to_datetime(data['start_time'])).dt.minute],axis=1)

data['时间'] = pd.PeriodIndex(year=year,month=month,day=day,hour=hour,minute=minute,freq='30T')

data = data.set_index(data['时间'])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值