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

Python pandas如何给列中为0的数值加1并转换时间差为整数

灾害持续天数统计问题解决方法

首先修正原有代码的一处逻辑错误:原代码计算时长时写反了起止日期顺序,会得到负的时间差,需调整为结束日期减去开始日期。
两个问题可通过修改Disaster_Length列的生成逻辑一次性解决,也可单独处理:

合并解决代码

替换掉原有创建Disaster_Length列的代码即可:

df_time['Disaster_Length'] = (df_time.End_Date_A - df_time.Start_Date_A).dt.days + 1

逻辑说明

  • 通过.dt.days属性提取时间差的天数字段,直接将timedelta类型转换为可参与计算的整数类型,解决B问题
  • 末尾统一加1,所有起止同日的0差值会自动变为1,跨天的统计也符合实际计数逻辑(如1日到2日时间差为1天,加1后得到2天,和实际持续天数一致),解决A问题

单独处理方案

如果需要单独处理0值条目,可使用如下代码:

# 先将时间差转换为整数类型
df_time['Disaster_Length'] = (df_time.End_Date_A - df_time.Start_Date_A).dt.days
# 再将值为0的条目统一加1
df_time.loc[df_time['Disaster_Length'] == 0, 'Disaster_Length'] = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:45:02