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

如何在Pandas中统计多行指定列的唯一值数量?

解决方案:统计多行合并后前6列的唯一值总数

首先构造符合需求的示例DataFrame(每行前6列含3个唯一值):

import pandas as pd

data = {
    'col1': [1, 4, 7, 10],
    'col2': [1, 4, 7, 10],
    'col3': [2, 5, 8, 11],
    'col4': [2, 5, 8, 11],
    'col5': [3, 6, 9, 12],
    'col6': [3, 6, 9, 12],
    'other_col': ['a', 'b', 'c', 'd']
}
df = pd.DataFrame(data)

# 你已实现的每行唯一值统计
df['count'] = df.iloc[:, 0:6].nunique(axis=1)

要实现每两行合并统计前6列唯一值总数并生成count2rows列,可以通过分组+自定义聚合的方式实现:

# 按每两行分组,计算每组前6列的唯一值总数
df['count2rows'] = df.groupby(df.index // 2).apply(
    lambda group: group.iloc[:, 0:6].values.flatten().nunique()
).reindex(df.index // 2).values

代码说明:

  • df.index // 2:将索引按每2个一组划分(0&1为组0,2&3为组1,以此类推),如果需要N行一组,替换为df.index // N即可。
  • group.iloc[:, 0:6].values.flatten():把每组的前6列数据扁平化为一维数组,方便统计跨多行的唯一值。
  • reindex(df.index // 2):将每组的统计结果映射回原DataFrame的每一行,确保同组的行共享同一个统计值。

执行后示例DataFrame的count2rows列会全部显示为6,符合两行合计6个唯一值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:09:21