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
相关产品推荐
相关产品推荐

