You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将日期转换为合法文件名?使用Timestamp生成文件名报错怎么解决

报错根因

报错是由list_of_days中的元素为pandas.Timestamp类型导致:Folium的Choropleth组件不支持将Timestamp类型作为数据映射的键,直接用Timestamp做文件名也容易出现格式兼容问题。

解决代码

直接替换原有遍历逻辑即可:

for day in list_of_days:
    # 转换为匹配DataFrame列名的日期字符串,根据你的实际列名格式调整占位符
    day_col_str = day.strftime("%Y-%m-%d")
    # 转换为标题用日期格式
    day_title_str = day.strftime("%Y-%m-%d, %A")
    # 转换为文件名用日期格式,移除特殊字符避免系统兼容问题
    day_file_str = day.strftime("%Y-%m-%d_%A")

    df_geo = df.copy()

    map1 = folium.Map(location=[-5.135399, 119.423790], tiles='openstreetmap', zoom_start=12)

    Choropleth(geo_data=df_geo.__geo_interface__,
               data=df_geo[day_col_str],
               key_on='feature.id',
               fill_color='RdPu',
               fill_opacity=0.7,
               legend_name='Daily Covid').add_to(map1)

    title_html = f'''<h3 align="center" style="font-size:20px">
                    <b>{day_title_str}</b></h3>
                 '''
    map1.get_root().html.add_child(folium.Element(title_html))

    embed_map(map1, f'./html_maps/{day_file_str}_Covid.html')
修改说明
  • 提前将Timestamp类型转为对应场景的字符串格式,消除类型不兼容报错
  • 文件名移除了逗号等特殊字符,适配Windows、Linux等不同系统的文件名规则
  • 直接调用Timestamp自带的strftime方法,无需额外用datetime类转换,减少逻辑冗余

如果你的DataFrame日期列名不是%Y-%m-%d格式,修改day_col_str的格式化占位符和列名格式保持一致即可。

内容的提问来源于stack exchange,提问作者isfanafely

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:54:04