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

如何从Pandas DataFrame移除超出范围的非NaN数据

解决方法

1. 安全修改数据(消除警告)

直接用布尔索引修改DataFrame时触发的警告,是因为你可能在操作原数据的切片副本。改用loc可以精准定位并修改原数据,避免警告:

# 将PM2.5列中超过150的值设为0
df2.loc[df2["PM2.5 particulate matter (Hourly measured)"] > 150, 
        "PM2.5 particulate matter (Hourly measured)"] = 0

如果不想改动原数据,建议先创建副本再处理,不影响后续分析:

df2_clean = df2.copy()
df2_clean.loc[df2_clean["PM2.5 particulate matter (Hourly measured)"] > 150, 
              "PM2.5 particulate matter (Hourly measured)"] = 0
# 绘图时替换成df2_clean即可
ax.bar(df1["Pressure (hPa)"].loc["2019"],
       df2_clean["PM2.5 particulate matter (Hourly measured)"].loc["2019"],
       alpha=0.2,
       color="Green")

2. 不修改数据,直接截断柱子

如果不想碰原始数据,给柱状图加上clip_on=True,再设置y轴范围,超出部分会被自动隐藏:

fig, ax = plt.subplots()
# 绘制时添加clip_on=True参数
ax.bar(df1["Pressure (hPa)"].loc["2019"],
       df2["PM10 particulate matter (Hourly measured)"].loc["2019"],
       alpha=0.2,
       clip_on=True)

ax.bar(df1["Pressure (hPa)"].loc["2019"],
       df2["PM2.5 particulate matter (Hourly measured)"].loc["2019"],
       alpha=0.2,
       color="Green",
       clip_on=True)

ax.set_xlim(970,1045)
# 设置y轴上限为150,超出部分会被裁剪
ax.set_ylim(0, 150)

3. 直接删除异常数据行

如果这个超出范围的值是无效数据,直接删掉对应行更彻底:

# 筛选出PM2.5≤150的行,生成清理后的副本
df2_clean = df2[df2["PM2.5 particulate matter (Hourly measured)"] <= 150]
# 同步清理df1,保证两个DataFrame索引对齐
df1_clean = df1.loc[df2_clean.index]
# 用清理后的数据集绘图
ax.bar(df1_clean["Pressure (hPa)"].loc["2019"],
       df2_clean["PM2.5 particulate matter (Hourly measured)"].loc["2019"],
       alpha=0.2,
       color="Green")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:52:35