DataFrame.groupby(column).apply(len)和DataFrame [column] .value_counts()有什么区别?

时间:2019-08-22 11:54:56

标签: python pandas group-by series

以下python代码给了我一个AssertionError:

p = DataFrame.groupby(column).apply(len).sort_values(ascending=False)
q = DataFrame[column].value_counts()
pd.testing.assert_series_equal(p, q)

我认为这些函数做同样的事情,实际上,当查看前几行时,所得的序列是相似的,但根据断言错误,它们仅相差59%。

1 个答案:

答案 0 :(得分:1)

两者几乎相似,只需要相同的索引名和相同的系列名-将所有值都设置为默认None

DataFrame = pd.DataFrame({'a': [1,5,4,2,1,2,1,2,1,4,2,3,2,1]})
column = 'a'
p = DataFrame.groupby(column).apply(len).sort_values(ascending=False)
q = DataFrame[column].value_counts()

print (p.name)
None
print (q.name)
a

print (p.index.name)
a
print (q.index.name)
None

pd.testing.assert_series_equal(p.rename_axis(None), q.rename(None))