如何将字符串转换为仅包含年份数字的日期?

How can convert string to date which only contains year number?

创建一个第一列为文本的数据框。

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

怎样才能达到目标?

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

其实我不关心datetime类型:

使用字符串 ('2019'),或优先使用整数 (2019),这样您就可以执行排序、计算等操作

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

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

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

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