Python Pandas重采样返回False而非NaN/NA问题咨询
解决Pandas重采样后缺失时段返回False而非NaN的问题
你遇到的这个问题,核心原因几乎可以锁定是数据类型不匹配导致的,咱们一步步来解决:
问题根源分析
你的value列大概率不是纯数值类型(比如float64或int64),而是混入了布尔值(True/False),导致列类型变成了object。当对混合类型的列执行resample.sum()时,空时段的计算结果就会异常返回False,而非预期的NaN。
具体解决方案
1. 先统一数据类型为数值型
先把value列转换为纯数值类型,同时将非数值内容(包括布尔值)强制转为NaN:
# 转换列类型,无法转换的内容自动转为NaN obs_mean['value'] = pd.to_numeric(obs_mean['value'], errors='coerce')
2. 重采样时确保空时段返回NaN
使用sum()的min_count参数,指定至少需要1个非NaN值才返回求和结果,否则直接返回NaN:
freq = 'H' obs_mean_resampled = obs_mean.resample(freq).sum(min_count=1)
验证结果
执行完上述步骤后,你的重采样结果会变成符合预期的样子:
value time 2018-05-18 08:00:00 2.200 2018-05-18 09:00:00 NaN 2018-05-18 10:00:00 24.800 2018-05-18 11:00:00 0.800 2018-05-18 12:00:00 21.400 2018-05-18 13:00:00 2.400
之后你就可以正常用dropna()或fillna()处理这些缺失值了。
内容的提问来源于stack exchange,提问作者Thilina Madumal
相关产品推荐
相关产品推荐

