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

Pandas选取两列重采样后.mean()仅返回一列的问题排查

问题排查与解决:Pandas重采样.mean()丢失列

这个问题我之前也碰到过,大概率是visibility列的数值有效性或者数据类型出了问题,导致聚合后整列结果全为NaN,被Pandas默认自动丢弃了。咱们一步步来排查和解决:

第一步:排查核心原因

先确认visibility列的关键状态,比如数据类型、缺失值数量,是否存在非数值内容:

# 检查数据类型
print("visibility列数据类型:", temp_2011_clean['visibility'].dtype)
# 统计缺失值总数
print("visibility列缺失值数量:", temp_2011_clean['visibility'].isna().sum())
# 如果是object类型,检查是否存在非数值字符串
if temp_2011_clean['visibility'].dtype == 'object':
    non_numeric = temp_2011_clean['visibility'].loc[~temp_2011_clean['visibility'].str.replace('.', '').str.isdigit()]
    print("非数值内容示例:", non_numeric.head())

常见触发问题的两种情况:

  • 数据类型错误:visibility列是object类型(比如存储为带格式的字符串),无法直接计算均值
  • 缺失值占比过高:该列大部分值是NaN,重采样聚合后整列结果全为NaN,Pandas默认会丢弃这类无有效结果的列

第二步:针对性解决

情况1:数据类型为object(字符串)

先将列转换为数值型,无法转换的内容强制转为NaN(后续可按需处理缺失值):

import pandas as pd
temp_2011_clean['visibility'] = pd.to_numeric(temp_2011_clean['visibility'], errors='coerce')

情况2:缺失值过多但需要保留列

如果确实有大量缺失值,但希望即使结果为NaN也保留列,可以用两种方式处理:

方式A:显式指定每列的聚合规则

这种方式会强制保留你指定的列,哪怕结果全是NaN:

temp_2011_clean[['visibility', 'dry_bulb_faren']].resample('W').agg({
    'visibility': 'mean',
    'dry_bulb_faren': 'mean'
}).head()

方式B:关闭均值计算的跳过缺失值设置(慎用)

设置skipna=False后,只要列中有任何NaN,整列的均值结果会变成NaN,但列会被保留:

temp_2011_clean[['visibility', 'dry_bulb_faren']].resample('W').mean(skipna=False).head()

第三步:验证修复结果

处理完成后,重新运行重采样聚合代码,就能看到visibility列被正常保留了:

temp_2011_clean[['visibility', 'dry_bulb_faren']].resample('W').mean().head()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:02:51