如何在Pandas中移除日期时间戳并转换为mm/dd/yyyy格式
因为你用dtype=str把所有列都读成了字符串,原本的日期被转成了带时间戳的字符串格式(比如2021-05-10 00:00:00),要转成mm/dd/yyyy格式,得先把这些字符串转回日期类型,再重新格式化。下面是具体的处理方法:
方法一:指定已知日期列处理
如果你明确知道哪些列是日期列,直接针对这些列处理最稳妥:
import pandas as pd # 读取文件,保留所有列的字符串格式(包括带前缀0的列) file_path = pd.ExcelFile(r'C:\Users\User\Downloads\Report4.xlsx') workbook = pd.read_excel(file_path, sheet_name=None, dtype=str) # 遍历每个工作表 for sheet_name, df in workbook.items(): # 替换成你实际的日期列名称,比如['订单日期', '发货日期'] target_date_cols = ['日期'] for col in target_date_cols: # 第一步:把字符串转成datetime类型;第二步:格式化为mm/dd/yyyy的字符串 df[col] = pd.to_datetime(df[col]).dt.strftime('%m/%d/%Y') # 保存处理后的所有工作表到新Excel文件 with pd.ExcelWriter('处理完成的报表.xlsx') as writer: for sheet_name, df in workbook.items(): df.to_excel(writer, sheet_name=sheet_name, index=False)
方法二:自动识别日期列处理
如果你不清楚具体哪些列是日期列,可以通过字符串格式自动匹配:
import pandas as pd file_path = pd.ExcelFile(r'C:\Users\User\Downloads\Report4.xlsx') workbook = pd.read_excel(file_path, sheet_name=None, dtype=str) for sheet_name, df in workbook.items(): # 筛选所有值符合"YYYY-MM-DD HH:MM:SS"格式的列 date_cols = [ col for col in df.columns if df[col].str.match(r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$').all() ] for col in date_cols: # 处理时加入errors='coerce',避免无效值导致报错(无效值会转成空字符串) df[col] = pd.to_datetime(df[col], errors='coerce').dt.strftime('%m/%d/%Y') # 保存结果 with pd.ExcelWriter('处理完成的报表.xlsx') as writer: for sheet_name, df in workbook.items(): df.to_excel(writer, sheet_name=sheet_name, index=False)
注意事项
- 处理后日期列会保持字符串格式,不会影响其他带前缀0的列(这些列本来就是字符串类型,未被改动)
- 如果某些单元格不是标准的日期时间字符串,
errors='coerce'会把它们转成NaN,再经过strftime变成空字符串,你可以根据需求用fillna填充默认值
内容的提问来源于stack exchange,提问作者Hari PN
相关产品推荐
相关产品推荐

