0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從指定日期中獲取星期幾的6種方法

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-30 10:20 ? 次閱讀

Python進行數(shù)據(jù)分析時,按照日期進行分組匯總也是被需要的,比如會找到銷量的周期性規(guī)律。

那么在用Python進行數(shù)據(jù)統(tǒng)計之前,就需要額外增加一步:從指定的日期當中獲取星期幾。比如2022年2月22日,本文就以2022-02-22為例,演示 Python獲取指定日期是“星期幾”的6種方法

圖片

weekday()

datetime模塊是一個Python內(nèi)置庫,無需再進行pip安裝,它除了可以顯示日期和時間之外,還可以進行日期和時間的運算以及格式化。

datetime模塊中的方法weekday()可用于檢索星期幾,結(jié)果返回0-6之間的整數(shù),用來代表“星期一”到“星期日”。

在交互式環(huán)境中輸入如下命令:

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

輸出:

1

在代碼中,datetime模塊會先將由年、月和日組成的日期轉(zhuǎn)換為datetime日期。然后weekday()方法獲取“2022-02-22”這天是星期二。

但是根據(jù)我們國內(nèi)的習慣,總不能直接輸出1吧。所以我們可以先自定義一個包含中文“星期幾”的列表,再通過索引的方式來返回一個中文的星期幾。

在交互式環(huán)境中輸入如下命令:

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

輸出:

'星期二'

這樣結(jié)果便是直接是星期二了。

isoweekday()

isoweekday()方法與前一個weekday()方法的工作原理類似,最大的區(qū)別是它返回1-7之間的整數(shù),用來代表“星期一”到“星期日”。

在交互式環(huán)境中輸入如下命令:

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

輸出:

2

這次輸出的結(jié)果便直接是“星期2”了。

strftime()

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

利用strftime()方法可以將datetime對象顯示為字符串。我們其實對日期格式轉(zhuǎn)化為字符串格式非常熟悉,比如strftime('%b-%m-%y %H:%M:%S'),只需將其中的指令改為%A,即可得到日期是星期幾。

在交互式環(huán)境中輸入如下命令:

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

輸出:

'Tuesday'

如果將代碼中的%A改為%a,則輸出的是星期幾的簡寫。

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

輸出:

'Tue'

calendar

在Python中calendar日歷模塊也是一個內(nèi)置庫,為我們對日歷做處理提供了很多方法,使用起來非常方便,我們可以使用它制作日歷/周歷等等。同樣,它也提供了weekday()day_name()方法來查詢指定日期是星期幾。

在交互式環(huán)境中輸入如下命令:

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

輸出:

1

這與前文第一個方法的datetime模塊weekday()方法是一模一樣的。

如果你想直接輸出日期的英文周名,calendar日歷模塊也有方法可以實現(xiàn)。

import datetime
import calendar

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

輸出:

'Tuesday'

pendulum

datetime模塊也有一些限制,比如處理時區(qū)問題等等。而pendulum模塊是這個第三方開源庫,可以解決內(nèi)置datetime模塊的所有問題。

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

當然,它也有方法可以輸出指定日期是星期幾。

在交互式環(huán)境中輸入如下命令:

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

輸出:

2

輸出的結(jié)果直接是“星期2”。

Pandas

最后,最后,我要說一個自己最常用的方法。因為小五平時主要在Pandas中處理數(shù)據(jù),那么生成“星期”列肯定會優(yōu)先考慮Pandas中的方法。

Series.dt可用于以datetimelike的形式訪問序列的值并返回幾個屬性。Series.dt.day_name()函數(shù)返回具有指定語言環(huán)境的DateTimeIndex的日期名稱。

在交互式環(huán)境中輸入如下命令:

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中方法。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2626

    瀏覽量

    47211
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    567

    瀏覽量

    20432
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1400

    瀏覽量

    33963
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84283
收藏 人收藏

    評論

    相關(guān)推薦

    一招讓你winXP右下角顯示星期

    一招讓你winXP右下角顯示星期今天星期?恐怕這是大家平時經(jīng)常要問的一個問題,但在我們的XP系統(tǒng)中,要想知道今天是星期
    發(fā)表于 02-08 11:04

    DS1302的星期 怎么不隨日期改變....

    DS1302的星期 怎么不隨日期改變....難到要通過算法實現(xiàn) 求助
    發(fā)表于 10-28 01:45

    獲取日期時間怎么把星期取消?

    想把獲取日期和時間寫入表格,但不想要星期,怎么取消呢?多謝?。?!
    發(fā)表于 12-09 10:16

    想要用該芯片寫一個實時時鐘,用來指定日期上傳數(shù)據(jù)包,請問誰有TM4C1231E6PZ關(guān)于RTC的例程?

    本帖最后由 一只耳朵怪 于 2018-6-8 08:56 編輯 想要用該芯片寫一個實時時鐘,用來指定日期上傳數(shù)據(jù)包,需要RTC例程參考一下。希望有的朋友能發(fā)一個,先謝謝了
    發(fā)表于 06-07 03:05

    基于MySQL根據(jù)出生日期計算年齡的五種方法

    MySQL根據(jù)出生日期計算年齡的五種方法比較
    發(fā)表于 04-01 14:49

    有沒有一種方法直接芯片上讀取27443的程序?

    有沒有一種方法直接芯片上讀取27443的程序?
    發(fā)表于 09-17 13:45

    微信小程序如何獲取日期天數(shù)帶星期

    微信小程序獲取日期天數(shù)帶星期
    發(fā)表于 06-01 13:46

    C語言輸入日期的幾種方法

    方法一:int const table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正數(shù)據(jù)表/**輸入日期,得到星期
    發(fā)表于 07-14 06:40

    有沒有一種方法可以在“附加板管理器 URL”中指定舊版本?

    總而言之, 我有一個在 ESP8266 上使用 painlessMesh 的項目。 已經(jīng)工作了好幾個月了。 不幸的是,最新版本的 8266 內(nèi)核導致 painlessMesh 編譯錯誤。 有沒有一種方法可以在“附加板管理器 URL”中指定舊版本
    發(fā)表于 05-08 08:25

    真實源IP怎么獲得?有這6種方法

    當數(shù)據(jù)包負載均衡器往后端轉(zhuǎn)發(fā)時候,真實源IP可在L3、L4、L7實現(xiàn),并且分別有2種方法可以獲得真實IP,因此共有6種方法
    的頭像 發(fā)表于 01-20 17:34 ?7943次閱讀

    時鐘芯片如何確定日期和時間?

    時鐘芯片是RTC集成電路,也被稱為實時時鐘。任何實時時鐘的核心都是晶振,晶振頻率為32768 Hz ,它為分頻計數(shù)器提供精確的與低功耗的實基信號,可以用于產(chǎn)生秒、分、時、日等信息,也就是說時鐘芯片是通過晶振的作用來確定日期和時間的。
    的頭像 發(fā)表于 11-16 17:15 ?7411次閱讀

    使用ESP8266 OLED和VisuinoNIST TIME服務器獲取日期和時間

    電子發(fā)燒友網(wǎng)站提供《使用ESP8266 OLED和VisuinoNIST TIME服務器獲取日期和時間.zip》資料免費下載
    發(fā)表于 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服務器獲取日期和時間

    電子發(fā)燒友網(wǎng)站提供《使用M5Stack StickC和VisuinoNIST TIME服務器獲取日期和時間.zip》資料免費下載
    發(fā)表于 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語言中沒有直接獲取文件長度的接口,但是我們可以使用標準庫提供的函數(shù)來間接的獲取文件長度。這里提供兩種方法
    的頭像 發(fā)表于 10-10 16:15 ?1233次閱讀
    C語言<b class='flag-5'>獲取</b>文件長度的兩<b class='flag-5'>種方法</b>

    字符串如何轉(zhuǎn)換成日期

    同編程語言將字符串轉(zhuǎn)換為日期類型。 正文: 一、Python中的字符串轉(zhuǎn)日期轉(zhuǎn)換 在Python中,使用datetime模塊可以方便地將字符串轉(zhuǎn)換為日期類型。具體的方法是首先導入dat
    的頭像 發(fā)表于 11-17 16:27 ?9468次閱讀