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

如何在不使用循环的情况下用Pandas提取列表指定索引元素?

解决方法

嘿,这事儿好办!你要的单行Pandas解决方案其实非常简洁,刚好匹配你给出的数据特征——每个列表里只有一个元素不是1,而且这个元素是列表里的最大值。

方法一:利用max快速提取(针对你的数据最简洁)

直接对每个列表应用max函数就行,因为非1的元素都是最大的那个:

import pandas as pd
df = pd.DataFrame({'A' : [[6,1,1,1], [1,5,1,1], [1,1,11,1], [1,1,1,20]]})

# 生成B列的单行代码
df['B'] = df['A'].apply(lambda x: max(x))

运行后得到的结果完全符合你的期望:

A   B
0   [6, 1, 1, 1]   6
1   [1, 5, 1, 1]   5
2  [1, 1, 11, 1]  11
3  [1, 1, 1, 20]  20

方法二:通用过滤法(适配更复杂的场景)

如果以后你的数据里出现其他非1的元素(比如小于1的数),用max就可能出错,这时候可以直接过滤掉所有1,取剩下的唯一元素:

df['B'] = df['A'].apply(lambda x: [num for num in x if num != 1][0])

这个方法更通用,不管非1元素是大是小,只要每个列表里只有一个非1元素,就能准确提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:17:56