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

如何筛选DataFrame中与指定Series共有的行?

筛选DataFrame与Series共有的行生成新DataFrame

嘿,我来帮你搞定这个筛选需求!要从现有DataFrame(df)里生成包含和指定Series共有行的新DataFrame(df1),用Pandas的话其实很简单,给你两种常用的方案:

方案1:基于指定列匹配(最常用)

如果你的需求是匹配df中某一列的值和目标Series的内容,直接用isin()方法就能快速实现:

import pandas as pd

# 假设你的目标Series叫target_series,要匹配df中的'key_column'列
df1 = df[df['key_column'].isin(target_series)]
  • 原理:df['key_column'].isin(target_series)会返回一个布尔Series,标记每一行的指定列值是否存在于目标Series中,用这个布尔结果索引df,就能直接得到筛选后的df1。

方案2:基于整行内容匹配

如果需要匹配整行数据和Series的对应关系(比如Series的索引对应df的列,值对应df的行内容),可以先把Series转为DataFrame,再用内连接merge实现:

import pandas as pd

# 将目标Series转为DataFrame,设置列名和df对应列一致
series_df = target_series.to_frame(name='key_column')
# 内连接筛选出两者共有的行
df1 = pd.merge(df, series_df, on='key_column', how='inner')
  • 原理:内连接(how='inner')只会保留两个DataFrame中匹配成功的行,刚好满足“共有行”的筛选需求。

额外提示

  • 如果需要匹配多列的共同值,可以把多个Series组合成一个临时DataFrame,再用merge方法指定多个连接键;
  • 要是你需要匹配的是df的索引和Series的值,只需要把代码里的列名换成df.index即可:df1 = df[df.index.isin(target_series)]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:59:47