Pandas如何在一组中获得独特的价值?

max*_*max 2 python pandas

这是我的数据帧:

df = pd.DataFrame([['a',1],['a',1],['a',1],['a',2],['b',2],['b',2],['c',3]], columns=['letters','numbers'])

    letters numbers
0   a   1
1   a   1
2   a   1
3   a   2
4   b   2
5   b   2
6   c   3
Run Code Online (Sandbox Code Playgroud)

我需要按组('字母')'数字'中唯一值的数量.所以输出就是

a 2
b 1
c 1
Run Code Online (Sandbox Code Playgroud)

这是我(非常丑陋)的解决方案.它有效,但任何人都可以帮我找到更多的Pythonic方法pandas吗?

result = []
groups = list(df['letters'].unique())
for g in groups:

    filtered_df = df[df['letters'] == g]

    uniques = len(filtered_df['numbers'].unique())
    result.append((g, uniques))

[('a', 2), ('b', 1), ('c', 1)]
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 6

运用 nunique

df.groupby('letters').numbers.nunique()
Out[864]: 
letters
a    2
b    1
c    1
Name: numbers, dtype: int64
Run Code Online (Sandbox Code Playgroud)