我有以下csv文件:
col_1,col_2
foo,1
foo,1
bar,1
bar,2
baz,1
baz,1
baz,2
baz,2
qux,1
qux,2
qux,3
以及以下代码(以及输出)
print(df.groupby('col_1').count())
# col_2
# col_1
# bar 2
# baz 4
# foo 2
# qux 3
print(df.groupby('col_1').nunique())
# col_1 col_2
# col_1
# bar 1 2
# baz 1 2
# foo 1 1
# qux 1 3
对于nunique
,将返回2列:col_1
和col_2
。为什么在我致电count
时col_1丢失?
答案 0 :(得分:1)
count
和nunique
是不同的功能,并且执行不同的操作。
文档链接以供进一步阅读:
count
返回每个组中每个系列的非NA值的数量。
nunique
返回每个组中每个序列的唯一非NA值的数量
关于为什么要实现nunique
以便也包括分组列的原因,我不确定,因为在df.groupby(...).nunique()
用例中,该系列通常是一系列的。
在通常情况下,分组列设置为索引(除非使用as_index=False
),并且不重复作为框架中的列。
count
的行为符合预期 groupby apply/agg
的语义,而并非相反。
但是,有人确实为nunique
编写了测试,其中预期的输出还包括分组列,作为您观察到的as_index=True
和as_index=False
的列。