文章目录
- 一、数据说明及目标
- 二、实现方式
- 1.提取date
- 2.提取hour
- 3.提取weekday
- 4.提取month
一、数据说明及目标
- 数据说明
数据表有一列名为"datetime"表示时间数据,该列的数据格式是"2020-01-01 05:20:15"。
import pandas as pd
data=pd.read_excel("D:\\test.xlsx")
data
data.dtypes
- 目标
提取date(年月日)、hour、weekday、month。
二、实现方式
1.提取date
按空格分成两段,取第一段。比如"2022-01-01"。
data["date"] = data.datetime.astype("str").apply(lambda x: x.split()[0])
data
说明:
- lambda函数也叫匿名函数,即没有具体名字的函数,它允许快速定义单行函数,用在任何需要函数的地方,这区别于def。
- apply函数,返回括号中的参数。
- split(sep),sep表示用于分割的字符。它通过指定字符进行切片。
2.提取hour
先把它按空格分成两段,取第二段,再按:切分,取第一段。比如"05"。
data["hour"]=data.datetime.astype("str").apply(lambda x: x.split()[1].split(":")[0])
3.提取weekday
按空格把时间分成两段取第一段,把它变成合适的时间格式,得出是星期几。(比如’Monday’)
from datetime import datetime
import calendar
datestr=data.datetime.astype("str")[1].split()[0]
data["weekday"]=data.date.apply(lambda datestr:calendar.day_name[datetime.strptime(datestr,"%Y-%m-%d").weekday()])
data
说明:
- datetime.strptime()函数把字符串转化为datetime格式,%Y 四位数的年份表示(000-9999),%m 月份(01-12),%d 月内中的一天(0-31)。
- weekday()函数返回的是当前日期所在的星期数。
- calendar.day_name()函数返回星期列表([‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’, ‘Sunday’]),根据返回星期天数列表对应的星期名称。
4.提取month
from datetime import datetime
import calendar
datestr=data.datetime.astype("str")[1].split()[0]
data["month"]=data.date.apply(lambda datestr:calendar.month_name[datetime.strptime(datestr,"%Y-%m-%d").month])
data
说明:
- month函数返回的是当前日期所在的月份。
- calendar.month_name函数返回月份列表([‘’, ‘January’, ‘February’, ‘March’, ‘April’, ‘May’, ‘June’, ‘July’, ‘August’, ‘September’, ‘October’, ‘November’, ‘December’]),根据返回的月份数取列表对应的月份名称。