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

Python:如何结合Groupby与行索引过滤DataFrame?

实现DataFrame分组过滤的解决方案

针对你的需求,我们可以用Pandas分三步完成,代码简单易懂,适合初学者:

1. 准备数据和导入工具

首先导入Pandas库,然后创建你提供的示例DataFrame:

import pandas as pd

# 构建示例数据
data = {
    'Name': ['John', 'John', 'John', 'Jane', 'Jane', 'Jane'],
    'Sequence': ['a,b,c,d,e', 'a,b,c,d', 'a,b,d', 'a,b,d', 'a,b,e', 'a,c,e']
}
df = pd.DataFrame(data)

2. 筛选符合条件的分组名称

按Name分组后,我们只需要关注每组最后一行的Sequence,判断它是否包含b或d:

# 定义一个判断函数,检查序列是否包含b或d
def has_b_or_d(sequence_str):
    # 把字符串按逗号拆分成元素列表
    elements = sequence_str.split(',')
    # 判断b或d是否在列表里
    return 'b' in elements or 'd' in elements

# 按Name分组,取每组最后一行的Sequence,再筛选出符合条件的Name
valid_groups = df.groupby('Name')['Sequence'].last().apply(has_b_or_d)
# 提取符合条件的Name列表
valid_names = valid_groups[valid_groups].index

3. 过滤原DataFrame

用筛选出的valid_names保留对应组的所有行:

# 只保留Name在valid_names里的行
filtered_df = df[df['Name'].isin(valid_names)]

# 打印结果看看
print(filtered_df)

运行后输出的结果就是只保留John的所有行,Jane的行被全部剔除,完全符合你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:50:04