如何使用Pandas DataFrame生成指定格式的日期时间字符串?
解决Pandas DataFrame日期转换为%A, %B %d, %Y格式的问题
错误原因分析
- 你提取的
date是字符串类型,而datetime.strftime()需要传入datetime对象作为第一个参数,直接传字符串会触发TypeError。 - 混淆了
strptime和strftime的作用:strptime:将字符串解析为datetime对象strftime:将datetime对象格式化为指定格式的字符串
优先推荐的Pandas方案
利用Pandas的datetime列处理能力,一次性完成类型转换和格式化,效率更高:
import pandas as pd # 测试数据 trial_data = [["EXA001.701","4/21/2023"]] trial_df = pd.DataFrame(trial_data, columns=["matterNo","trial_date"]) # 1. 将字符串日期列统一转换为datetime类型(自动识别格式,特殊格式可指定format="%m/%d/%Y") trial_df['trial_date'] = pd.to_datetime(trial_df['trial_date']) # 目标编号输入 matter_input = "EXA001.701" # 2. 提取并格式化为目标格式 formatted_date = trial_df.loc[trial_df['matterNo'] == matter_input, 'trial_date'].dt.strftime("%A, %B %d, %Y").iloc[0] print(formatted_date) # 输出:Friday, April 21, 2023
说明:
pd.to_datetime()能自动识别绝大多数常见日期格式,批量转换整列比单独处理单个元素更高效。- Pandas的
dt访问器专门用于datetime列的元素级操作,dt.strftime()可直接对整列应用格式化规则。
替代方案(使用datetime模块)
如果仅需处理单个提取的日期字符串,可直接用datetime模块完成解析和格式化:
import pandas as pd from datetime import datetime # 测试数据 trial_data = [["EXA001.701","4/21/2023"]] trial_df = pd.DataFrame(trial_data, columns=["matterNo","trial_date"]) matter_input = "EXA001.701" # 提取原始日期字符串 date_str = trial_df.loc[trial_df['matterNo'] == matter_input, 'trial_date'].iloc[0] # 先解析为datetime对象,再格式化为目标字符串 dt_obj = datetime.strptime(date_str, "%m/%d/%Y") formatted_date = dt_obj.strftime("%A, %B %d, %Y") print(formatted_date) # 输出:Friday, April 21, 2023
内容的提问来源于stack exchange,提问作者Jeff Gordon
相关产品推荐
相关产品推荐

