计算每组唯一值的数量

spe*_*rum 0 python group-by dataframe pandas pandas-groupby

我有 2 列 - _a,_b。

import numpy as np 
import pandas as pd
df = pd.DataFrame({'_a':[1,1,1,2,2,3,3],'_b':[3,4,5,3,3,3,9], 'a_b_3':[3,3,3,1,1,2,2]})
df

    _a  _b  a_b_3   
0   1   3   3
1   1   4   3
2   1   5   3
3   2   3   1
4   2   3   1
5   3   3   2
6   3   9   2
Run Code Online (Sandbox Code Playgroud)

我需要使用 pandas 的 groupby 创建列 a_b_3 (来自列“_b”的唯一计数)。先感谢您。

cs9*_*s95 5

看起来你想要transform+ nunique;

df['a_b_3'] = df.groupby('_a')['_b'].transform('nunique')        
df
   _a  _b  a_b_3
0   1   3      3
1   1   4      3
2   1   5      3
3   2   3      1
4   2   3      1
5   3   3      2
6   3   9      2
Run Code Online (Sandbox Code Playgroud)

这实际上是groupby++ :nuniquemap

v = df.groupby('_a')['_b'].nunique()
df['a_b_3'] = df['_a'].map(v)

df
   _a  _b  a_b_3
0   1   3      3
1   1   4      3
2   1   5      3
3   2   3      1
4   2   3      1
5   3   3      2
6   3   9      2
Run Code Online (Sandbox Code Playgroud)