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

    文章

    2705

    浏览量

    47464
  • 字符串
    +关注

    关注

    1

    文章

    579

    浏览量

    20512
  • 数据分析
    +关注

    关注

    2

    文章

    1449

    浏览量

    34056
  • python
    +关注

    关注

    56

    文章

    4796

    浏览量

    84668
收藏 人收藏

    评论

    相关推荐

    一招让你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

    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

    真实源IP怎么获得?有这6种方法

    当数据包负载均衡器往后端转发时候,真实源IP可在L3、L4、L7实现,并且分别有2种方法可以获得真实IP,因此共有6种方法
    的头像 发表于 01-20 17:34 8096次阅读

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

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

    使用ESP8266 OLED和VisuinoNIST TIME服务器获取日期和时间

    电子发烧友网站提供《使用ESP8266 OLED和VisuinoNIST TIME服务器获取日期和时间.zip》资料免费下载
    发表于 06-28 09:55 0次下载
    使用ESP8266 OLED和Visuino<b class='flag-5'>从</b>NIST TIME服务器<b class='flag-5'>获取</b><b class='flag-5'>日期</b>和时间

    使用M5Stack StickC和VisuinoNIST TIME服务器获取日期和时间

    电子发烧友网站提供《使用M5Stack StickC和VisuinoNIST TIME服务器获取日期和时间.zip》资料免费下载
    发表于 07-06 14:28 0次下载
    使用M5Stack StickC和Visuino<b class='flag-5'>从</b>NIST TIME服务器<b class='flag-5'>获取</b><b class='flag-5'>日期</b>和时间

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

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

    字符串如何转换成日期

    同编程语言将字符串转换为日期类型。 正文: 一、Python中的字符串转日期转换 在Python中,使用datetime模块可以方便地将字符串转换为日期类型。具体的方法是首先导入dat
    的头像 发表于 11-17 16:27 9979次阅读