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

如何删除dfA中索引未在dfB中出现的行?

筛选DataFrame保留与另一个DataFrame索引重合的行

原始数据

dfA:

hour    distance    short_summary
1   5       2.02        Overcast
2   7       1.16        Overcast
3   3       1.35        Partly Cloudy
4   12      1.17        Overcast
5   22      1.80        Overcast
6   9       1.72        Partly Cloudy
7   18      1.09        Partly Cloudy

dfB:

price
1         22.5
3         8.5
5         14.0
6         7.0
7         9.5

需求

删除dfA中索引未出现在dfB里的行,最终保留的dfA如下:

hour    distance    short_summary
1   5       2.02        Overcast
3   3       1.35        Partly Cloudy
5   22      1.80        Overcast
6   9       1.72        Partly Cloudy
7   18      1.09        Partly Cloudy

实现方法

方法1:使用loc+isin

直接通过索引的isin方法筛选出dfA中索引存在于dfB索引中的行:

dfA_filtered = dfA.loc[dfA.index.isin(dfB.index)]

这会返回一个新的DataFrame,不修改原dfA。如果需要直接修改原dfA,可执行:

dfA.drop(dfA[~dfA.index.isin(dfB.index)].index, inplace=True)

方法2:使用merge合并

通过索引做内连接合并,之后删除不需要的列:

dfA_filtered = dfA.merge(dfB, left_index=True, right_index=True, how='inner').drop('price', axis=1)

how='inner'会只保留索引重合的行,合并后去掉dfB的price列即可得到目标结果。

方法3:使用reindex

直接用dfB的索引重新构建dfA,自动丢弃不存在的索引行:

dfA_filtered = dfA.reindex(dfB.index)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:33:46