如何将数据框中的日期列从数字转换为格式化文本? (Python)

How to convert date column in dataframe from numbers to formatted text? (Python)

我有一列 dt["startDateEST"] 输出为:

0    2021-07-27 21:46:00-04:00
1    2021-07-27 21:46:00-04:00
2    2021-07-27 19:06:00-04:00
3    2021-07-27 19:06:00-04:00
4    2021-07-27 19:11:00-04:00
                ...           
79   2021-07-27 19:11:00-04:00
80   2021-07-27 19:11:00-04:00
81   2021-07-27 19:11:00-04:00
82   2021-07-27 19:11:00-04:00
83   2021-07-27 19:06:00-04:00
Name: startDateEST, Length: 84, dtype: datetime64[ns, America/New_York]

我正在尝试创建一个新列 dt["startDateEST_Long"],该列 dt["startDateEST"] 转换为 word 格式为:

0    Jul 27, 2021, 9:46 PM
1    Jul 27, 2021, 9:46 PM
2    Jul 27, 2021, 7:06 PM
3    Jul 27, 2021, 7:06 PM
4    Jul 27, 2021, 7:11 PM
             etc...

我尝试了不同版本的日期时间函数并转换为字符串对象 (.tolist)/解析,但无法正常工作或 运行 没有 Series/attribute 错误。请帮忙,谢谢!!

您需要先将其设为日期时间,然后使用strftime 将其转换为所需格式的字符串。您可以找到选项 here。值得注意的是,非零填充小时 %-I 仅适用于某些操作系统,因此倾向于只使用 %I 这将零填充小时

df = pd.DataFrame({
    'startDateEST':[
        '2021-07-27 21:46:00-04:00',
        '2021-07-27 19:11:00-04:00'
    ]
})


df['startDateEST_Long'] = df.startDateEST.apply(lambda x: pd.to_datetime(x).strftime(format='%b %d, %Y, %I:%M %p'))

print(df)

输出

                startDateEST       startDateEST_Long
0  2021-07-27 21:46:00-04:00  Jul 27, 2021, 09:46 PM
1  2021-07-27 19:11:00-04:00  Jul 27, 2021, 07:11 PM

首先创建一些示例数据:

dates = pd.date_range("2021-07-27", periods=48, freq="H").tz_localize("America/New_York")

然后填充DataFrame

dt = pd.DataFrame({"startDateEST": dates})

查看 python 日期时间格式化字符串并相应地格式化

dt["startDateEST_Long"] = dt["startDateEST"].dt.strftime('%b %d, %Y, %I:%M%p')
dt.head()
0 2021-07-27 00:00:00-04:00  Jul 27, 2021, 12:00AM
1 2021-07-27 01:00:00-04:00  Jul 27, 2021, 01:00AM
2 2021-07-27 02:00:00-04:00  Jul 27, 2021, 02:00AM
3 2021-07-27 03:00:00-04:00  Jul 27, 2021, 03:00AM
4 2021-07-27 04:00:00-04:00  Jul 27, 2021, 04:00AM