Python 数据帧对象中每个唯一实体的计数值

Python 数据帧对象中每个唯一实体的计数值,python,pandas,counting,Python,Pandas,Counting,我有一个3列的csv文件。用户、文本和标签。每个用户都有多个文本和标签。 我想知道出现频率最高的标签,以便确定每个用户的类别 我试过: for i in df['user'].unique(): print (df['class'].value_counts()) 它为所有用户返回如下所示的相同值 4 3062 1 1250 0 393 3 281 2 13 Name: class, dtype: int64 我也试过了 for h in df[

我有一个3列的csv文件。用户、文本和标签。每个用户都有多个文本和标签。 我想知道出现频率最高的标签,以便确定每个用户的类别

我试过:

for i in df['user'].unique():
    print (df['class'].value_counts())
它为所有用户返回如下所示的相同值

4    3062
1    1250
0     393
3     281
2      13
Name: class, dtype: int64
我也试过了

for h in df['user'].unique():
    g = Counter(df['class'])
    print (g)
得到

Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
下面是示例数据
请帮助

有关按组计算值的信息,您可以使用
groupby
pd.value\u counts

df = pd.DataFrame([[1, 1], [1, 2], [1, 3], [1, 1], [1, 1], [1, 2],
                   [2, 1], [2, 3], [2, 2], [2, 2], [2, 3], [2, 3]],
                  columns=['user', 'class'])

res = df.groupby('user')['class'].apply(pd.value_counts).reset_index()
res.columns = ['user', 'class', 'count']

print(res)

   user  class   count
0     1      1       3
1     1      2       2
2     1      3       1
3     2      3       3
4     2      2       2
5     2      1       1

示例数据和预期输出使它更加清晰。那么您只想计算每个用户的标签?也许,
groupby
可以帮助你,对不起,伙计。我现在已经包括了样本数据,这是一个非常好的答案。但是如何编写条件语句来访问count的值呢。i、 e.如果类的计数值>200,则类别=0或1或2….?这是一个单独的问题,但您可以使用
pd.cut
np.digitalize
,如所示。感谢您快速准确的回答,我也查看了