微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 计算Pandas groupby中的唯一索引值

在Pandas中,有一种非常简洁的方法可以按操作计算组内列中的不同值.例如

ex = pd.DataFrame([[1, 2, 3], [6, 7, 8], [1, 7, 9]], 
                  columns=["A", "B", "C"]).set_index(["A", "B"])
ex.groupby(level="A").C.nunique()

将返回

A
1    2
6    1
Name: C, dtype: int64

我还想计算索引级别B中的不同值,同时按A进行分组.我找不到从groupby对象访问B级别的简洁方法.我能想到的最好的是:

ex.reset_index("B", drop=False).groupby(level="A").B.nunique()

正确返回:

A
1    2
6    1
Name: B, dtype: int64 

有没有办法让我在groupby上执行此操作而不重置索引或使用apply函数

解决方法:

IIUC你可以为所有级别执行reset_index,然后groupby为’A’并应用nunique方法

res = ex.reset_index().groupby('A').agg(lambda x: x.nunique())

In [339]: res
Out[339]:
   B  C
A
1  2  2
6  1  1

与pivot_table相同的解决方案:

In [341]: ex.reset_index().pivot_table(index='A', aggfunc=lambda x: x.nunique())
Out[341]:
   B  C
A
1  2  2
6  1  1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐