【问题标题】:How can convert string to date which only contains year number?如何将字符串转换为仅包含年份的日期?
【发布时间】:2021-10-16 08:35:49
【问题描述】:

创建一个数据框,其第一列是文本。

import pandas as pd
values = {'dates':  ['2019','2020','2021'],
          'price': [11,12,13]
          }
df = pd.DataFrame(values, columns = ['dates','price'])

检查数据类型:

df.dtypes
dates    object
price     int64
dtype: object

dates列中的类型转换为dates

df['dates'] = pd.to_datetime(df['dates'], format='%Y')
df
       dates  price
0 2019-01-01     11
1 2020-01-01     12
2 2021-01-01     13

我想将dates列中的类型转换为date,日期格式如下----只包含年号:

    dates  price
0 2019     11
1 2020     12
2 2021     13

怎样才能达到目标?

【问题讨论】:

  • 没有只有年份的日期类型。最少日期需要年、月和日。如果缺少一个元素,它将被提供。通常默认缺失的日期和月份是第一个。在 int 值不起作用的情况下,您要做什么?或者你想做什么使一年中的第一天不起作用?
  • @AnuragDabas 我提供了一个(我希望是有意义的)答案,你能重新打开吗?

标签: pandas dataframe datetime format


【解决方案1】:

如果您选择为您的列使用datetime 格式,它可能会从中受益。您在列(“2019-01-01”)中看到的是 datetime 对象的表示。真正的问题是,为什么需要datetime 对象?

其实我不关心datetime类型:

使用字符串 ('2019'),或优先使用整数 (2019),这将使您能够执行排序、计算等。

我需要datetime 类型,但我真的只想查看年份:

使用style 格式化您的列,同时保留基础类型:

df.style.format({'dates': lambda t: t.strftime('%Y')})

这将允许您在保持类型的同时拥有干净的视觉格式

【讨论】:

  • 值得注意的是,pandas Styler 不能在 Juypter 笔记本等交互式 HTML 环境之外工作,只能导出到支持其格式的环境,如 excel 和 LaTeX。在How to change the datetime format in Pandas 中有一个与此非常相似的答案
猜你喜欢
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多