如何筛选Cow与Lact列值相同但Procedure列值不同的行
解决方法
你可以通过groupby结合filter实现需求,核心是先按Cow和Lact分组,再筛选出分组内Procedure存在多种取值的所有行。
完整代码
import pandas as pd data = [[1152, '1', '10'], [1154, '1', '4'], [1152, '1', '10'], [1155, '2', '10'], [1152, '1', '4'], [1155, '2', '10']] df = pd.DataFrame(data, columns =['Cow', 'Lact', 'Procedure']) # 筛选Cow和Lact相同但Procedure有不同值的行 result = df.groupby(['Cow', 'Lact']).filter(lambda x: x['Procedure'].nunique() > 1) print(result)
代码说明
groupby(['Cow', 'Lact']):将数据按牛编号(Cow)和泌乳期(Lact)分组,保证同一组内的Cow、Lact值完全一致。filter(lambda x: x['Procedure'].nunique() > 1):对每个分组执行过滤逻辑,nunique()用于统计分组内Procedure的唯一值数量,当数量大于1时,说明该分组存在不同的Procedure取值,保留该分组的所有行。
运行结果
Cow Lact Procedure 0 1152 1 10 2 1152 1 10 4 1152 1 4
内容的提问来源于stack exchange,提问作者JohnH
相关产品推荐
相关产品推荐

