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']]