python pandas 分组后去重统计

本文介绍了两种在Python的Pandas库中对DataFrame进行分组后去重统计的方法。方法一是使用nunique()函数,直接获取各组唯一值的数量;方法二是通过unique()获取唯一值,然后利用DataFrame.from_records()创建新DataFrame,再通过stack()转为Series,最后使用value_counts()进行计数。这两种方法均适用于DataFrame的分组统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python pandas 分组后去重统计

有DataFrame:

df = pd.DataFrame({
    'group': [1, 1, 2, 3, 3, 3, 4],
    'param': ['a', 'a', 'b', np.nan, 'a', 'a', np.nan]
})
print(df)

#    group param
# 0      1     a
# 1      1     a
# 2      2     b
# 3      3   NaN
# 4      3     a
# 5      3     a
# 6      4   NaN

想要得到的结果:

# a    2
# b    1

方法一

nunique()

print (df.groupby('param')['group'].nunique())
param
# a    2
# b    1
# Name: group, dtype: int64

方法二

  1. unique()
  2. create new df by DataFrame.from_records()
  3. reshape to Series by stack
  4. value_counts()
a = df[df.param.notnull()].groupby('group')['param'].unique()
print (pd.DataFrame.from_records(a.values.tolist()).stack().value_counts())
# a    2
# b    1
# dtype: int64

来自 stack overflow

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值