0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从指定日期中获取星期几的6种方法

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-30 10:20 次阅读

Python进行数据分析时,按照日期进行分组汇总也是被需要的,比如会找到销量的周期性规律。

那么在用Python进行数据统计之前,就需要额外增加一步:从指定的日期当中获取星期几。比如2022年2月22日,本文就以2022-02-22为例,演示 Python获取指定日期是“星期几”的6种方法

图片

weekday()

datetime模块是一个Python内置库,无需再进行pip安装,它除了可以显示日期和时间之外,还可以进行日期和时间的运算以及格式化。

datetime模块中的方法weekday()可用于检索星期几,结果返回0-6之间的整数,用来代表“星期一”到“星期日”。

在交互式环境中输入如下命令:

from datetime import datetime
datetime.date(2022, 2, 22).weekday()

输出:

1

在代码中,datetime模块会先将由年、月和日组成的日期转换为datetime日期。然后weekday()方法获取“2022-02-22”这天是星期二。

但是根据我们国内的习惯,总不能直接输出1吧。所以我们可以先自定义一个包含中文“星期几”的列表,再通过索引的方式来返回一个中文的星期几。

在交互式环境中输入如下命令:

week_list = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
week_list[datetime.date(2022, 2, 22).weekday()]

输出:

'星期二'

这样结果便是直接是星期二了。

isoweekday()

isoweekday()方法与前一个weekday()方法的工作原理类似,最大的区别是它返回1-7之间的整数,用来代表“星期一”到“星期日”。

在交互式环境中输入如下命令:

import datetime
datetime.date(2022, 2, 22).isoweekday()

输出:

2

这次输出的结果便直接是“星期2”了。

strftime()

如果你想直接输出日期的英文周名,不妨试试strftime()方法。

利用strftime()方法可以将datetime对象显示为字符串。我们其实对日期格式转化为字符串格式非常熟悉,比如strftime('%b-%m-%y %H:%M:%S'),只需将其中的指令改为%A,即可得到日期是星期几。

在交互式环境中输入如下命令:

import datetime
datetime.date(2022, 2, 22).strftime("%A")

输出:

'Tuesday'

如果将代码中的%A改为%a,则输出的是星期几的简写。

datetime.date(2022, 2, 22).strftime("%a")

输出:

'Tue'

calendar

在Python中calendar日历模块也是一个内置库,为我们对日历做处理提供了很多方法,使用起来非常方便,我们可以使用它制作日历/周历等等。同样,它也提供了weekday()day_name()方法来查询指定日期是星期几。

在交互式环境中输入如下命令:

import calendar
calendar.weekday(2022, 2, 22)

输出:

1

这与前文第一个方法的datetime模块weekday()方法是一模一样的。

如果你想直接输出日期的英文周名,calendar日历模块也有方法可以实现。

import datetime
import calendar

date_week = datetime.date(2022, 2, 22).weekday()
calendar.day_name[date_week]

输出:

'Tuesday'

pendulum

datetime模块也有一些限制,比如处理时区问题等等。而pendulum模块是这个第三方开源库,可以解决内置datetime模块的所有问题。

https://pypi.org/project/pendulum/

当然,它也有方法可以输出指定日期是星期几。

在交互式环境中输入如下命令:

import pendulum
pendulum.parse('2022-02-22').day_of_week

输出:

2

输出的结果直接是“星期2”。

Pandas

最后,最后,我要说一个自己最常用的方法。因为小五平时主要在Pandas中处理数据,那么生成“星期”列肯定会优先考虑Pandas中的方法。

Series.dt可用于以datetimelike的形式访问序列的值并返回几个属性。Series.dt.day_name()函数返回具有指定语言环境的DateTimeIndex的日期名称。

在交互式环境中输入如下命令:

import pandas as pd
from datetime import datetime

df = pd.DataFrame({
    "name": ["张三", "李四", "朱五"],
    "date": [datetime(2022, 2, 21), datetime(2022, 2, 22), datetime(2022, 2, 23)]})
df

输出如下图所示:

图片

df["week_num1"] = df["date"].dt.dayofweek
df["week_num2"] = df["date"].dt.weekday
df["week_name"] = df["date"].dt.day_name()
df

输出如下图所示:

图片

在今天的文章中,我们一共介绍了从指定的日期当中获取星期几的6中方法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2485

    浏览量

    46533
  • 字符串
    +关注

    关注

    1

    文章

    552

    浏览量

    20130
  • 数据分析
    +关注

    关注

    2

    文章

    1352

    浏览量

    33736
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83468
收藏 人收藏

    评论

    相关推荐

    一招让你winXP右下角显示星期

    一招让你winXP右下角显示星期今天星期?恐怕这是大家平时经常要问的一个问题,但在我们的XP系统中,要想知道今天是星期
    发表于 02-08 11:04

    DS1302的星期 怎么不随日期改变....

    DS1302的星期 怎么不随日期改变....难到要通过算法实现 求助
    发表于 10-28 01:45

    获取日期时间怎么把星期取消?

    想把获取日期和时间写入表格,但不想要星期,怎么取消呢?多谢!!!
    发表于 12-09 10:16

    想要用该芯片写一个实时时钟,用来指定日期上传数据包,请问谁有TM4C1231E6PZ关于RTC的例程?

    本帖最后由 一只耳朵怪 于 2018-6-8 08:56 编辑 想要用该芯片写一个实时时钟,用来指定日期上传数据包,需要RTC例程参考一下。希望有的朋友能发一个,先谢谢了
    发表于 06-07 03:05

    基于MySQL根据出生日期计算年龄的五种方法

    MySQL根据出生日期计算年龄的五种方法比较
    发表于 04-01 14:49

    有没有一种方法直接芯片上读取27443的程序?

    有没有一种方法直接芯片上读取27443的程序?
    发表于 09-17 13:45

    微信小程序如何获取日期天数带星期

    微信小程序获取日期天数带星期
    发表于 06-01 13:46

    启动Redis的三种方法

    Redis笔记(1)——安装、卸载、三种方法启动Redis,Redis命令使用(干货十足),Redis两种方法设置密码,时间复杂度(更完善哦~)
    发表于 06-08 16:09

    香橙派PC Plus电脑开发板获取CPU温度的三种方法

    下文将给大家介绍在PC Plus获取CPU温度的三种方法:1、shell操作 先通过shell操作热身一下,登录系统之后使用指令查看CPU温度,依次输入以下指令: # 进入目录 cd /sys
    发表于 07-31 17:48

    C语言输入日期的几种方法

    方法一:int const table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表/**输入日期,得到星期
    发表于 07-14 06:40

    有没有一种方法可以在“附加板管理器 URL”中指定旧版本?

    总而言之, 我有一个在 ESP8266 上使用 painlessMesh 的项目。 已经工作了好几个月了。 不幸的是,最新版本的 8266 内核导致 painlessMesh 编译错误。 有没有一种方法可以在“附加板管理器 URL”中指定旧版本
    发表于 05-08 08:25

    7种方法教您怎么进步电感Q值

    7种方法教您怎么进步电感Q值 7种方法教您怎么进步电感Q值电感Q值指的是电感质量因素,一般来说,电感Q值到几百的都有。近日小编接到来自山东,江西,江苏等省份多个仪器外表及检测行业
    发表于 05-19 15:08

    Arduino使用RTCLIB库如何输出Feb Fri之类的星期的信息?

    Arduino使用RTCLIB库如何输出Feb Fri之类的星期的信息 例程的char daysOfTheWeek可以输出全称不是简写​
    发表于 11-10 07:13

    时钟芯片如何确定日期和时间?

    时钟芯片是RTC集成电路,也被称为实时时钟。任何实时时钟的核心都是晶振,晶振频率为32768 Hz ,它为分频计数器提供精确的与低功耗的实基信号,可以用于产生秒、分、时、日等信息,也就是说时钟芯片是通过晶振的作用来确定日期和时间的。
    的头像 发表于 11-16 17:15 6904次阅读

    C语言获取文件长度的两种方法

    C语言中没有直接获取文件长度的接口,但是我们可以使用标准库提供的函数来间接的获取文件长度。这里提供两种方法
    的头像 发表于 10-10 16:15 641次阅读
    C语言<b class='flag-5'>获取</b>文件长度的两<b class='flag-5'>种方法</b>