如何将数据框中的日期列从数字转换为格式化文本? (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
我有一列 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