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

如何在Pandas DataFrame中实现分组后取字符串最大值

在Pandas DataFrame中实现SQL等价的分组取字符串最大值功能

需求场景

需要实现与SQL语句select user_id,max(channel) from table_name group by user_id完全等价的功能:按user_id分组后,提取channel列的最大值,自动忽略空值和空字符串,最终得到非空的最大字符串结果。

测试数据构造

先还原你提供的输入数据(包含空值和空字符串):

import pandas as pd

df = pd.DataFrame({
    'user_id': [123, 123, 123],
    'channel': ['online', pd.NA, '']
})

实现代码

直接通过groupby结合max()方法即可实现:

# 分组后取channel的最大值,重置索引恢复DataFrame结构
result = df.groupby('user_id')['channel'].max().reset_index()

输出结果

运行后得到的result如下:

user_id channel
0      123  online

原理说明

Pandas对字符串列执行max()时,会遵循以下逻辑:

  • 按字符串的字典序进行大小比较('online'的字典序大于空字符串'')
  • 缺失值(pd.NA/np.nan)和空字符串会被自动排除在最大值计算外,行为与SQL的MAX()完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:45:37