【发布时间】:2018-11-14 06:22:36
【问题描述】:
例如:
df1 = pd.DataFrame(np.repeat(np.arange(1,7),3), columns=['A'])
df1.A.value_counts(sort=False)
1 3
2 3
3 3
4 3
5 3
6 3
Name: A, dtype: int64
df2 = pd.DataFrame(np.repeat(np.arange(1,7),100), columns=['A'])
df2.A.value_counts(sort=False)
1 100
2 100
3 100
4 100
5 100
6 100
Name: A, dtype: int64
在上述示例中,value_counts 完美运行并提供所需的结果。而当处理更大的数据帧时,它会给出不同的输出。这里A 的值已经排序并且计数也相同,但是A 的索引顺序在value_counts 之后发生了变化。为什么它对少量计数正确但对大量计数不正确:
df3 = pd.DataFrame(np.repeat(np.arange(1,7),1000), columns=['A'])
df3.A.value_counts(sort=False)
4 1000
1 1000
5 1000
2 1000
6 1000
3 1000
Name: A, dtype: int64
在这里我可以使用df3.A.value_counts(sort=False).sort_index() 或df3.A.value_counts(sort=False).reindex(df.A.unique())。我想知道它在不同计数下表现不同的原因?
使用:
Numpy version :1.15.2
Pandas version :0.23.4
【问题讨论】: