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

3
以下 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个回答

1

两者几乎相同,只需使用相同的索引名称和相同的Series名称 - 将所有内容设置为默认值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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接