pandas保存Excel文件时如何拼接取值与当前日期时间作为文件名
报错原因
原代码存在4个问题导致运行失败:
- 缺少
datetime模块的导入语句,调用时间方法时会触发名称错误 df.iloc[1]返回的是包含索引的Series对象,不是单元格里的纯字符串值print()函数没有返回值(返回None),直接把print()写在to_excel()的路径参数位置,相当于传了个无效路径- 原始datetime对象转字符串时默认带
:等Windows/macOS都不允许出现在文件名里的特殊字符,就算路径传对了也会保存失败
可直接运行的正确代码
import pandas as pd import datetime df = {'Apple' : ['iPhone', 'iPad', 'Mac']} df = pd.DataFrame(df) # 取第2行(索引为1)Apple列的取值,也就是"iPad" name_part = df.loc[1, 'Apple'] # 格式化当前时间为文件名合法的格式:年月日_时分秒,不会出现特殊字符 time_part = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") # 拼接成完整文件名 file_name = f"{name_part}_{time_part}.xlsx" # 导出文件 df.to_excel(file_name, index=False)
补充说明
- 取单元格值如果不想写列名,也可以用
df.iloc[1, 0],第一个参数是行索引,第二个是列索引,直接返回标量字符串 - 时间格式可以自行调整,只要不包含
\ / : * ? " < > |这类文件名非法字符即可,比如要显示到毫秒可以写成"%Y%m%d_%H%M%S_%f" - 运行后会在脚本运行的当前目录生成类似
iPad_20240520_162035.xlsx的Excel文件,符合预期命名格式。
内容的提问来源于stack exchange,提问作者HelpMeCode
相关产品推荐
相关产品推荐

