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

使用pd.Grouper按周分组时,如何获取DataFrame指定列的唯一值?

解决按周提取DataFrame列唯一值的问题

嘿,我明白你遇到的问题了——DataFrameGroupBy对象确实没有unique()方法,因为这个方法是属于单个Series的,而你现在是对整个DataFrame分组,所以直接调用会报错。不过咱们有几种简单的方法可以实现你想要的效果:

方法1:使用agg()配合pd.Series.unique

这是最直接的方式,通过agg()函数对每个列单独应用Series的unique()方法:

df_unique_list = df.groupby(pd.Grouper(freq="W"))[['A', 'B']].agg(pd.Series.unique)

这里注意把列名写成列表['A', 'B'],这在新版本Pandas里更规范,也能避免潜在的警告。运行后你会得到一个以周为索引的DataFrame,A、B列分别存储对应周的唯一值数组。

方法2:用lambda函数转成列表(更易处理)

如果你希望结果是列表格式(而不是numpy数组),可以用lambda函数包装一下:

df_unique_list = df.groupby(pd.Grouper(freq="W"))[['A', 'B']].agg(lambda x: list(pd.unique(x)))

这样后续处理这些唯一值的时候会更方便,比如遍历或者判断元素是否存在。

可选:去除空值

如果你的数据里有NaN,想要在唯一值里排除它们,可以在lambda里加上dropna():

df_unique_list = df.groupby(pd.Grouper(freq="W"))[['A', 'B']].agg(lambda x: list(pd.unique(x.dropna())))

这样就能完美实现按周获取A、B列的唯一值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:00:00