DataFrame.groupby(column).apply(len) 和 DataFrame[column].value_counts() 有什么区别?
What is the difference between DataFrame.groupby(column).apply(len) and DataFrame[column].value_counts()?
下面的 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% 相似。
两者几乎相似,只需要相同的索引名称和相同的系列名称 - 全部设置为默认值 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))
下面的 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% 相似。
两者几乎相似,只需要相同的索引名称和相同的系列名称 - 全部设置为默认值 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))