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

如何检查Pandas同组内某列指定行值并返回统一结果?

分组检查指定末尾行并标记整组结果

原始代码

import pandas as pd
  
data = {'Group': ['1', '1', '1', '1', '1', '1',
                  '2', '2', '2', '2', '2', '2',
                  '3', '3', '3', '3', '3', '3',
                  '4', '4', '4', '4', '4', '4',],
        'Test1': ['ABC', 'CDE', 'EFG', 'GHI', 'IJK', 'KLM',
                  'MNO', 'OPQ', 'QRS', 'STU', 'UVW', 'WXYZ',
                  'ABC', 'CDE', 'EFG', 'GHI', 'IJK', 'KLM',
                  'MNO', 'OPQ', 'QRS', 'STU', 'UVW', 'WXYZ',],
        'Test2': ['1234','4567', '8910', '1112', '1314', '1415',
                  '1516', '1718', '1920', '2122', '2324', '2526',
                  '2728', '2930', '3132', '3334', '3536', '3738',
                  '2940', '4142', '4344', '4546', '4748', '4950'],
        'Value': [True, True, False, False, False, True,
                  True, True, True, True, True, True,
                  True, True, True, True, True, False,
                  True, True, True, False, True, True,],
        }
  
df = pd.DataFrame(data)

print(df)

需求说明

针对每个Group分组,检查其最后2、3或4行的Value列值:

  • 若这些行中存在False,则该组所有行返回False
  • 若这些行全为True,则该组所有行返回True

以检查最后3行为例,预期输出如下:

Group | Value
----- | -----  
  1   |   False 
  1   |   False
  1   |   False
  2   |   True
  2   |   True
  2   |   True
  3   |   False
  3   |   False
  3   |   False
  4   |   False
  4   |   False
  4   |   False

解决方案

可以通过groupby结合tail()和all()实现需求,代码如下:

def check_group_tail(df, n):
    # 计算每个分组最后n行Value是否全为True
    group_status = df.groupby('Group')['Value'].apply(lambda x: x.tail(n).all())
    # 将分组结果映射回原数据的每一行
    df['Value'] = df['Group'].map(group_status)
    return df[['Group', 'Value']]

# 检查最后3行的情况
result = check_group_tail(df, 3)
print(result.to_string(index=False))

代码解释

  • x.tail(n):提取每个分组的最后n行数据
  • .all():判断这些行的Value是否全部为True,只要有一个False就返回False
  • df['Group'].map(group_status):将每个分组的判断结果对应到原DataFrame的每一行

如果需要检查最后2行或4行,只需修改函数的第二个参数n即可,比如调用check_group_tail(df, 2)或check_group_tail(df, 4)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:35:18