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

pd.DataFrame.drop()的互补方法是什么?如何保留指定索引行?

Pandas DataFrame 行筛选相关问题解答

问题1:pd.DataFrame.drop()的互补方法是什么?

pd.DataFrame.drop()的作用是删除指定的行或列,它的互补操作就是保留指定行/列,常用的方法有这几种:

  • 直接索引筛选:用df.loc[目标索引]或者df.iloc[目标位置]直接选取想要保留的行,这是最直观的互补操作。比如你想保留索引为[0,2]的行,直接写df.loc[[0,2]]就好,和用drop删掉这两行完全是反向操作。
  • 条件筛选:如果是按列值条件保留行,df.query()会很方便,比如df.query("Magnitude > 3")就能保留震级大于3的行,这也相当于drop掉不符合条件的行。
  • 布尔索引:通过布尔数组来筛选,比如df[df['Year'] == 2018],只保留2018年的数据,本质也是保留目标行,和drop互补。

问题2:如何删除DataFrame中除指定索引外的所有行?

你现在用df_new = df.drop(df.index[index_value])是删掉index_value指定的行,要反过来保留这些行、删掉其他所有行,有几种简单的实现方式:

方法1:直接选取目标索引(最推荐)

如果index_value是你要保留的实际索引值(比如你的df里的6131、6132这类),直接用loc选取:

# 单个索引值
df_new = df.loc[[index_value]]
# 多个索引值(比如保留索引6131和6133)
df_new = df.loc[[6131, 6133]]

如果index_value是位置索引(比如0、1、2这种对应行的位置),就用iloc:

# 保留第0行和第2行
df_new = df.iloc[[0, 2]]

方法2:用drop的反向操作

也可以通过drop删掉除目标索引外的所有行,先获取所有索引中不属于index_value的部分,再drop:

# 先得到要删除的索引(所有索引减去目标索引)
drop_indices = df.index.difference(index_value)
df_new = df.drop(drop_indices)

举个你的df例子,假设你要保留索引6131和6135的行,用方法1的代码就是:

df_new = df.loc[[6131, 6135]]

得到的df_new就只有这两行数据,其他行都被“删除”(其实是筛选保留,效果一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:29:24