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

如何从DataFrame列的列表中提取最长元素(含并列情况)

提取DataFrame列表列中的最长单词

问题描述

现有如下DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Names':[['John','Stefan'], ['Stacy','Jennifer'], ['Paul','Sean', 'Alu']],
})

需要新增一列Output,提取Names列每个列表中的最长单词;若存在多个长度相同的最长单词,返回所有符合条件的单词,预期输出如下:

NamesOutput
[John, Stefan]Stefan
[Stacy, Jennifer]Jennifer
[Paul, Sean, Alu]Paul, Sean

已知单个列表的处理方式如下,但不清楚如何遍历DataFrame列及处理并列最长的情况:

sorted_list = sorted(my_list, key=len)
largest_element = sorted_list[-1]

解决方案

可以通过pandas的apply方法遍历列中的每个列表,配合自定义函数实现需求:

1. 定义处理单个列表的函数

该函数会找到列表中所有长度最长的单词,并将其用逗号连接为字符串:

def get_longest_words(lst):
    # 处理空列表的边界情况(可选)
    if not lst:
        return ""
    # 获取列表中单词的最大长度
    max_length = max(len(word) for word in lst)
    # 筛选出所有长度等于最大长度的单词
    longest_words = [word for word in lst if len(word) == max_length]
    # 用逗号连接成字符串返回
    return ", ".join(longest_words)

2. 应用函数生成新列

使用apply方法将函数作用于Names列,生成Output列:

df['Output'] = df['Names'].apply(get_longest_words)

结果验证

执行上述代码后,df的内容如下:

Names       Output
0      [John, Stefan]        Stefan
1    [Stacy, Jennifer]      Jennifer
2  [Paul, Sean, Alu]  Paul, Sean

完全符合预期需求。

说明

  • apply方法会自动遍历Names列的每个列表元素,将其传入自定义函数处理
  • 直接计算最大长度并筛选的方式,比排序后取最后一个更高效,同时能自然处理多个并列最长单词的情况
  • 用, 连接结果,保证输出格式与预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:25:18