这是我的数据帧:
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)
运用 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)
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |