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

如何通过索引删除Pandas DataFrame行以排除其在柱状图中显示

解决Pandas df.drop()删除行后仍显示在柱状图的问题

我看到你的问题了——调用df.drop([10])删除索引10的"total"行后,那行还是出现在柱状图里对吧?问题的核心在于Pandas的drop()方法默认不会修改原始DataFrame,它只是返回一个删除指定行后的新DataFrame,而你没有把这个新结果保留下来,也没有让修改直接作用在原数据上。

下面给你两种可行的解决方案:

方案1:使用inplace=True参数直接修改原DataFrame

这个参数会让drop()操作直接在原DataFrame上生效,不需要额外赋值:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("https://raw.githubusercontent.com/ryan-j-hope/Shielding-models/master/2020%20Uk%20Population%20By%20Age%20Demographics.csv", encoding='UTF')
df.drop([10], inplace=True)  # 添加inplace=True,直接修改原df
print(df)
ag = df["Age Group"]
pop = df["Population (%)"]
plt.bar(ag, pop)
plt.show()

方案2:将删除后的新DataFrame重新赋值给原变量

如果不想修改原数据(或者更习惯这种显式的赋值方式),可以把drop()返回的新对象存回df:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("https://raw.githubusercontent.com/ryan-j-hope/Shielding-models/master/2020%20Uk%20Population%20By%20Age%20Demographics.csv", encoding='UTF')
df = df.drop([10])  # 把删除后的新DataFrame重新赋值给df
print(df)
ag = df["Age Group"]
pop = df["Population (%)"]
plt.bar(ag, pop)
plt.show()

补充说明

Pandas的大多数数据处理方法(比如drop()、filter()、sort_values()等)都是非原地修改的设计,这样可以避免不小心破坏原始数据。所以以后遇到类似操作时,记得要么用inplace=True,要么把结果重新赋值给变量,这样后续的操作才会基于修改后的数据执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:38:10