这是我的数据框:

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

我需要按组(“字母”)数字中唯一值的数目。所以结果是
a 2
b 1
c 1

这是我的(非常丑陋的)解决方案。它是有效的,但是有谁能帮我找到一个更像蟒蛇的方法来使用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)]

最佳答案

使用nunique

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

关于python - Pandas 如何在一个群体中获得独特的值(value)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52881407/

10-12 21:53