pandas日期字段处理--pandas日期和字符串之间的相互转换,从日期字段中提取年月日、时分秒、周数、季度等

 

目录

1、pandas导入数据(以导入csv文件为例)

2、将str类型/object类型转换为datetime类型,强制转换,跳过错误

3、将str类型/object类型转换为datetime类型,提取年月日时分秒

4、利用字符串截取原理,提取年月日时分秒

5、其他时间处理方法:


在做数据处理的过程,包括数据过滤、数据汇总计算等都会经常用到pandas从日期属性中提取年月日。pandas做数据处理分析也不例外。

1、pandas导入数据(以导入csv文件为例)

import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
#查看某个函数、方法的详细使用。如输入pd.read_csv,然后按shift+tab(4次)
df = pd.read_csv(r"spider.csv",header=None,names=['datetime','url','name','x','y'],encoding='utf-8')
display(df.head(5))
display(df.info())

2、将str类型/object类型转换为datetime类型,强制转换,跳过错误

#pandas将str类型/object类型转换为datetime类型,强制转换,跳过错误
df["datetime"]= pd.to_datetime(df['datetime'],errors='coerce')
display(df.head(5))
display(df.info())

3、将str类型/object类型转换为datetime类型,提取年月日时分秒

属性 说明
year datetime 的年
month datetime 的月
day datetime 的日
hour datetime 的小时
minute datetime 的分钟
second datetime 的秒
microsecond datetime 的微秒
nanosecond datetime 的纳秒
date 返回 datetime.date(不包含时区信息)
time 返回 datetime.time(不包含时区信息)
timetz 返回带本地时区信息的 datetime.time
dayofyear 一年里的第几天
weekofyear 一年里的第几周
week 一年里的第几周
dayofweek 一周里的第几天,Monday=0, Sunday=6
weekday 一周里的第几天,Monday=0, Sunday=6
weekday_name 这一天是星期几 (如,Friday)
quarter 日期所处的季节:Jan-Mar = 1,Apr-Jun = 2 等
days_in_month 日期所在的月有多少天
is_month_start 逻辑判断是不是月初(由频率定义)
is_month_end 逻辑判断是不是月末(由频率定义)
is_quarter_start 逻辑判断是不是季初(由频率定义)
is_quarter_end 逻辑判断是不是季末(由频率定义)
is_year_start 逻辑判断是不是年初(由频率定义)
is_year_end 逻辑判断是不是年末(由频率定义)
is_leap_year 逻辑判断是不是日期所在年是不是闰年
#提取年月日时分秒:方法1
df = pd.read_csv(r"spider.csv",header=None,names=['datetime','url','name','x','y'],encoding='utf-8')
df['datetime'] = pd.to_datetime(df['datetime'],errors='coerce')   #先转化为datetime类型,默认format='%Y-%m-%d %H:%M:%S'
df['date'] = df['datetime'].dt.date   #转化提取年-月-日
df['year'] =df['datetime'].dt.year.fillna(0).astype("int")   #转化提取年 ,
#如果有NaN元素则默认转化float64型,要转换数据类型则需要先填充空值,在做数据类型转换
df['month'] = df['datetime'].dt.month.fillna(0).astype("int")  #转化提取月
df['%Y_%m'] = df['year'].map(str) + '-' + df['month'].map(str) #转化获取年-月
df['day'] = df['datetime'].dt.day.fillna(0).astype("int")      #转化提取天
df['hour'] = df['datetime'].dt.hour.fillna(0).astype("int")    #转化提取小时
df['minute'] = df['datetime'].dt.minute.fillna(0).astype("int") #转化提取分钟
df['second'] = df['datetime'].dt.second.fillna(0).astype("int") #转化提取秒
df['dayofyear'] = df['datetime'].dt.dayofyear.fillna(0).astype("int") #一年中的第n天
df['weekofyear'] = df['datetime'].dt.weekofyear.fillna(0).astype("int") #一年中的第n周
df['weekday'] = df['datetime'].dt.weekday.fillna(0).astype("int") #周几,一周里的第几天,Monday=0, Sunday=6
df['quarter'] = df['datetime'].dt.quarter.fillna(0).astype("int")  #季度
display(df.head())

4、利用字符串截取原理,提取年月日时分秒

 

#提取年月日时分秒:方法2
df = pd.read_csv(r"spider.csv",header=None,names=['datetime','url','name','x','y'],encoding='utf-8')
#为了统一日期格式,先转化为datetime,并处理NaN元素
#先转化为datetime类型,默认format='%Y-%m-%d %H:%M:%S'
df['datetime'] = pd.to_datetime(df['datetime'],errors='coerce').fillna("0000-00-00 00:00:00")
#转化为字符串类型,利用截取字符串获取年月日时分秒
df['date'] = df['datetime'].astype("str").str[0:10] #截取年-月-日
df['%Y-%m'] = df['datetime'].astype("str").str[0:7] #截取年-月
df['day'] = df['datetime'].astype("str").str[8:10] #截取日
df['hour'] = df['datetime'].astype("str").str[11:13] #截取日
display(df.head())

5、其他时间处理方法:

发布了103 篇原创文章 · 获赞 75 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41685388/article/details/103860881