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

请求解析DataFrame中代码行uniques = data.apply(lambda x: [x.unique])的功能

理解 Pandas DataFrame 中 data.apply(lambda x: [x.unique]) 的作用

Hey there! Let's break down this line of code step by step, because I can tell you're probably aiming to get unique values from your DataFrame columns—and there's a tiny tweak needed to make it work as intended.

逐部分拆解原代码

  • data.apply(...): 在 Pandas 里,apply 方法会默认沿着列方向(axis=0)对 DataFrame 的每一列执行传入的函数。每次 lambda 运行时,参数 x 代表的就是原 DataFrame 中的一整列(也就是一个 Series 对象)。
  • lambda x: [x.unique]: 这里是关键问题所在——x.unique 指向的是方法本身,而不是执行这个方法后得到的结果。把它放进列表里,只是把这个方法的引用存进了列表,并没有真正调用它去获取唯一值。

原代码的实际输出

如果直接运行这行代码,你得到的会是一个 Series,每个元素都是一个包含方法对象的列表,完全不是你想要的唯一值。举个例子,输出大概长这样:

col0    [<bound method Series.unique of 0    1\n1    2\n2...
col1    [<bound method Series.unique of 0    a\n1    b\n2...
dtype: object

这种结果对分析数据没有任何帮助。

修正后的正确写法

如果你的目标是获取每一列的唯一值数组,只需要给 unique 加上括号,调用这个方法就行:

uniques = data.apply(lambda x: x.unique())

修正后会返回一个 Series,每个元素对应原 DataFrame 列的唯一值数组,比如:

col0    [1, 2, 3]
col1    ['a', 'b', 'c']
dtype: object

另外,如果你只需要每一列唯一值的数量,Pandas 有更高效的内置方法:

unique_counts = data.nunique()

要是你更习惯用字典来映射列名和对应的唯一值,这种写法也很清晰:

uniques_dict = {col: data[col].unique() for col in data.columns}

总结

你写的原代码核心意图很明确——提取 DataFrame 每一列的唯一值,但因为少加了括号,导致它存的是方法引用而非实际结果。补上这个小细节,代码就能完全符合你的预期了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 02:49:12