如何将含缺失值的Pandas DataFrame从object转为int并计算小时数
解决方案
首先你犯了个基础错误:to_numeric是pandas的顶级函数,不是DataFrame对象的方法,所以不能用MID_calc.to_numeric(),得用pd.to_numeric()来处理单列数据。
接下来给你完整的处理步骤:
1. 转换列的数值类型
先把hrs、mins、secs三列转成支持空值的整数类型(用Int64,大写I的Nullable Integer,避免普通int无法存储NaN的问题):
import pandas as pd # 转换每一列 MID_calc['hrs'] = pd.to_numeric(MID_calc['hrs'], errors='coerce').astype('Int64') MID_calc['mins'] = pd.to_numeric(MID_calc['mins'], errors='coerce').astype('Int64') MID_calc['secs'] = pd.to_numeric(MID_calc['secs'], errors='coerce').astype('Int64')
这里errors='coerce'会把无法转换的空值(比如你的None)转成NaN,方便后续计算。
2. 计算小时单位的数值
直接用公式把时分秒转成总小时数:
MID_calc['hrs_cor'] = MID_calc['hrs'] + MID_calc['mins']/60 + MID_calc['secs']/3600
比如第二行的5小时30分钟,计算后就是5 + 30/60 = 5.5,符合你的需求。空值行的计算结果会自动是NaN,不影响有效数据。
验证结果
转换后可以用MID_calc.dtypes查看列类型,确认hrs、mins、secs已经变成Int64,hrs_cor是浮点类型。
内容的提问来源于stack exchange,提问作者Stephen J. Suss Chacán
相关产品推荐
相关产品推荐

