如何计算pandas中每个唯一值的出现次数

问题描述 投票:2回答:1

我有大熊猫数据帧,我想计算其中每个唯一值的出现,我尝试下面但它需要很多时间和内存使用。我怎么能以pythonic的方式做到这一点?

pack=[]
for index,row in packets.iterrows ():
    pack.extend(pd.Series(row).dropna().values.tolist())

unique, count= np.unique(pack, return_counts=True)
counts= np.asarray((unique, count))
python dataframe count
1个回答
2
投票

您似乎想要计算所有列的值计数。你可以把它压平成一个系列,放下NaNs,然后调用value_counts。这是一个样本 -

df

     a    b
0  1.0  NaN
1  1.0  NaN
2  3.0  3.0
3  NaN  4.0
4  5.0  NaN
5  NaN  4.0
6  NaN  5.0
pd.Series(df.values.ravel()).dropna().value_counts()

5.0    2
4.0    2
3.0    2
1.0    2
dtype: int64

另一种方法是使用np.unique -

u, c = np.unique(pd.Series(df.values.ravel()).dropna().values, return_counts=True)
pd.Series(c, index=u)

1.0    2
3.0    2
4.0    2
5.0    2
dtype: int64

请注意,第一种方法按计数的降序对结果进行排序,而后者则不计。

© www.soinside.com 2019 - 2024. All rights reserved.