Python 从数字中获取月份名称

Python 从数字中获取月份名称,python,datetime,date,Python,Datetime,Date,如何从月份编号中获取月份名称 例如,如果我有3,我想返回march date.tm_month() 如何获取字符串march import datetime mydate = datetime.datetime.now() mydate.strftime("%B") 返回日期:12月 更多关于 [编辑:来自@GiriB的精彩评论]您还可以使用%b,它返回月名的简短符号 mydate.strftime("%b") 对于上面的示例,它将返回Dec 从中可以看到,calendar.month\

如何从月份编号中获取月份名称

例如,如果我有
3
,我想返回
march

date.tm_month()
如何获取字符串
march

import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
返回日期:12月

更多关于


[编辑:来自@GiriB的精彩评论]您还可以使用
%b
,它返回月名的简短符号

mydate.strftime("%b")
对于上面的示例,它将返回
Dec

从中可以看到,
calendar.month\u name[3]
将返回
March
,并且
0
的数组索引是空字符串,因此也不需要担心零索引

import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'
四月

如果(像我一样)您在数据框中有一列月数,我将提供:

df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])

如果你只需要知道一个给定数字(1-12)的月份名称,这就没有多大帮助了,因为当天并不重要

calendar.month\u name[i]

calendar.month\u缩写[i]

在这里更有用

以下是一个例子:

import calendar

for month_idx in range(1, 13):
    print (calendar.month_name[month_idx])
    print (calendar.month_abbr[month_idx])
    print ("")
样本输出:

January
Jan

February
Feb

March
Mar

...

这就是我要做的:

from datetime import *

months = ["Unknown",
          "January",
          "Febuary",
          "March",
          "April",
          "May",
          "June",
          "July",
          "August",
          "September",
          "October",
          "November",
          "December"]

now = (datetime.now())
year = (now.year)
month = (months[now.month])
print(month)
它输出:

>>> September

(这是我写这篇文章时的真实日期)

我创建了自己的函数,将数字转换为相应的月份

def month_name (number):
    if number == 1:
        return "January"
    elif number == 2:
        return "February"
    elif number == 3:
        return "March"
    elif number == 4:
        return "April"
    elif number == 5:
        return "May"
    elif number == 6:
        return "June"
    elif number == 7:
        return "July"
    elif number == 8:
        return "August"
    elif number == 9:
        return "September"
    elif number == 10:
        return "October"
    elif number == 11:
        return "November"
    elif number == 12:
        return "December"
然后我可以调用这个函数。例如:

print (month_name (12))
产出:

>>> December

对于任意月数范围

month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)

将生成正确的列表。调整
start
-从月份整数列表中一月开始的位置开始的参数。

8.1。datetime-基本日期和时间类型-Python 2.7.17文档

所有strftime参数的列表。月份名称和格式之类的好东西都没有填充。阅读全文,了解“天真”参数的规则。以下是简要列表: %一个太阳,星期一,…,坐着

%A星期天,星期一,…,星期六

%w Weekday作为数字,其中0表示星期日

%d月01日、02日、…、31日

%b一月,二月,…,十二月

%B一月、二月、十二月

%以零填充01、02、…、12表示的m个月数

%y 2位年份零填充00,01,…,99

%Y 4位数年份1970、1988、2001、2013

%小时(24小时时钟)零填充00,01,…,23

%I小时(12小时时钟)零填充01,02,…,12

%下午或上午

%M分钟零填充00,01,…,59

%S第二个零填充00,01,…,59

%f微秒零填充000000000001,…,999999

%z UTC偏移量的形式为+HHMM或-HHMM+0000,-0400,+1030

%Z时区名称UTC、EST、CST

%j年中的某一天零填充001、002、…、366

%U一年的周数为零填充,第一个星期日前的天数为0周

%W年度周数(星期一为第一天)

%c语言环境的日期和时间表示形式。1988年8月16日星期二21:30:00

%x语言环境的日期表示形式。1988年8月16日(美国)

%X语言环境的时间表示。21:30:00

%%文本“%”字符。

一些字符已经使用了,但设置的效果尚未提及

日历根据当前区域设置月份名称,例如法语:

导入区域设置
导入日历
setlocale(locale.LC_ALL'fr_fr')
断言日历。月份名称[1]=“janvier”
断言日历。月份\u缩写[1]=“一月”
如果计划在代码中使用
setlocale
,请务必阅读文档中的和部分。这里显示的示例并不代表应该如何使用它。特别是,从这两个部分:

在某些库例程中调用setlocale()通常不是一个好主意,因为它会影响整个程序[…]

扩展模块不应调用setlocale()[…]


要同时打印所有月份,请执行以下操作:

 import datetime

 monthint = list(range(1,13))

 for X in monthint:
     month = datetime.date(1900, X , 1).strftime('%B')
     print(month)

此脚本将演示如何获取数据框中月份变量/列的日历月份缩写。请注意,假设month列/变量的值都是数字,可能会缺少一些值

# Import the calendar module
  import calendar
    
# Extract month as a number from the date column
  df['Month']=pd.DatetimeIndex(df['Date']).month

# Using list comprehension extract month abbreviations for each month number
 df['Month_abbr']=[calendar.month_abbr[int(i)] if pd.notna(i) else i for i in df['Month']]

您还可以使用calendar.month_abbr[i]作为短月份名称-例如,三月。注意:您可能需要在文件顶部导入日历,然后才能使用它。如果有人希望在pandas中这样做,解决方案如下:。只是这是在字符串格式的问题中查找月份名称时得到的第一个结果。如果你只需要知道一个给定数字(1-12)的月份名称,这并没有多大帮助,因为当天并不重要。calendar.month\u name[i]或calendar.month\u abbr[i]在这里更有用。
mydate.strftime(“%b”)
返回月名的简短符号。(对于上面的示例,它将返回
Dec
)OP希望使用整数作为输入,而不是datetime.datetime对象。您可以使用mydate=datetime.datetime(2019,integer,1,0,0),但很难说我看不出这是如何回答问题的。请注意,如果使用非英语区域设置,%B可能返回错误的月份名称。例如,对于ruаru区域设置%B,返回“ааа”而不是“аааа”。谢谢您的回答。如果我可以添加一个建议,您可以添加一些输入和输出的示例,以显示如何使用此代码以及
month\u name
month\u abbr
之间的差异。这很有帮助,我建议在您的示例中使用
范围(1,13)
,这样您就可以获得所有12个月的输出。这一点很好。范围(开始、结束)从开始到结束,但不包括结束。Ie使用start。。。end-1.如其他答案所示,此功能已存在于内置的
日历
模块中。创建自己的函数来复制相同的结果有什么好处?此外,字典比一系列elif语句要快得多。除了所有其他问题外,您的函数只适用于英语localeGood添加,我建议您添加一个回退文化或只是wr
# Import the calendar module
  import calendar
    
# Extract month as a number from the date column
  df['Month']=pd.DatetimeIndex(df['Date']).month

# Using list comprehension extract month abbreviations for each month number
 df['Month_abbr']=[calendar.month_abbr[int(i)] if pd.notna(i) else i for i in df['Month']]