【问题标题】:extract month from date in python在python中从日期中提取月份
【发布时间】:2022-01-04 01:37:14
【问题描述】:

我有一列日期,格式为 2010-01-31。我可以使用

提取年份
#extracting year
year = df["date"].values
year = [my_str.split("-")[0] for my_str in year]
df["year"] = year

我正在尝试获取月份,但我不明白如何在第二次拆分时获取它。

【问题讨论】:

  • 如果您使用的是 pandas,您可以使用 df.apply 将它们设为日期时间对象,这可能是一种更有用的数据存储方式

标签: python pandas


【解决方案1】:
import datetime

a = '2010-01-31'

datee = datetime.datetime.strptime(a, "%Y-%m-%d")


datee.month
Out[9]: 1

datee.year
Out[10]: 2010

datee.day
Out[11]: 31

【讨论】:

  • 当月的问题除外
  • @PadraicCunningham 我希望 OP 不需要太多牵手,他们会看到“然后提取年份”并认为“但是等等,我真的想提取月份!我可以不要使用这个答案!”
  • @SethMMorton,答案实际上并没有显示如何提取年份,所以除非您使用 datetime 之前它对初学者来说可能并不明显。
  • 使用代码,我得到: AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
【解决方案2】:

替代解决方案

创建一个存储月份的列:

data['month'] = data['date'].dt.month

创建一个存储年份的列:

data['year'] = data['date'].dt.year
【解决方案3】:
>>> a='2010-01-31'
>>> a.split('-')
['2010', '01', '31']
>>> year,month,date=a.split('-')
>>> year
'2010'
>>> month
'01'
>>> date
'31'

【讨论】:

  • 真的吗?你对datetime 标准库有什么意见?
  • @MauroBaraldi 也许这对他来说太主流了
【解决方案4】:

如果你使用datetime,你可以在datetime方法的最后加上.month

>>> from datetime import datetime, date, time, timedelta, timezone
>>> datetime.now()
datetime.datetime(2022, 1, 3, 11, 33, 16, 609052)
>>> datetime.now().date()
datetime.date(2022, 1, 3)
>>> datetime.now().date().month
1

【讨论】:

  • 我理解不是直接回答问题,但同时也解决了日期格式的拆分问题。这对于遇到类似问题的人可能会派上用场。
猜你喜欢
  • 2019-03-20
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2021-10-02
相关资源
最近更新 更多