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

如何在Python的DataFrame中按条件新增Last_entry列?

实现方案

首先先确认原始数据集的创建代码:

import pandas as pd

# 创建数据集
data = {
    'team': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'],
    'Run_time': [1, 2, 3, 4, 5, 1, 2, 3, 1, 2, 3, 4],
    'Married': ['No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'No'],
    'Self_Employed': ['No', 'No', 'Yes', 'No', 'No', 'No', 'Yes', 'No', 'No', 'Yes', 'No', 'No'],
    'LoanAmount': [123, 128, 66, 120, 141, 52,96,15,85,36,58,89],
}

df = pd.DataFrame(data)

下面提供三种简洁的实现方式:

方法一:分组对比最大值

通过groupby按team分组,用transform获取每组的Run_time最大值,再将当前行的Run_time与组内最大值对比,相等则标记为1,否则为0:

df['Last_entry'] = df.groupby('team')['Run_time'].transform(lambda x: x == x.max()).astype(int)

方法二:利用排名标记

对每组的Run_time做降序排名,排名为1的行就是该组Run_time最大的行,再将布尔值转为整数:

df['Last_entry'] = df.groupby('team')['Run_time'].rank(ascending=False, method='first').eq(1).astype(int)

注:method='first'是为了处理同一组内出现多个相同最大值的情况,确保只标记第一个出现的最大值行;如果需要标记所有最大值行,可以去掉该参数。

方法三:索引定位赋值

先初始化Last_entry列为0,再找到每组Run_time最大值对应的索引,最后给这些索引位置赋值为1:

df['Last_entry'] = 0
max_indices = df.groupby('team')['Run_time'].idxmax()
df.loc[max_indices, 'Last_entry'] = 1

执行任意一种方法后,输出df就能看到新增的Last_entry列符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:55:22