如何计算熊猫数据框中的唯一值?

时间:2019-03-10 20:51:36

标签: python pandas

我有一个pandas的{​​{1}}数据框

Y =

共有5个唯一值:

       0  1  2  3
0      1  1  0  0
1      0  0  0  0
2      1  1  1  0
3      1  1  0  0
4      1  1  0  0
5      1  1  0  0
6      1  0  0  0
7      1  1  1  0
8      1  0  0  0
...   .. .. .. ..
14989  1  1  1  1
14990  1  1  1  0
14991  1  1  1  1
14992  1  1  1  0

[14993 rows x 4 columns]

对于每个唯一值,我想计算它在1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 Y

中的次数

2 个答案:

答案 0 :(得分:3)

为此,我们可以使用size来获得唯一的组合。 应用groupby时,我们计算聚合的# Groupby on all columns which aggregates the data df_group = df.groupby(list(df.columns)).size().reset_index() # Because we used reset_index we need to rename our count column df_group.rename({0:'count'}, inplace=True, axis=1)

   0  1  2  3  count
0  0  0  0  0      1
1  1  0  0  0      2
2  1  1  0  0      4
3  1  1  1  0      4
4  1  1  1  1      2

输出

print(df)
       0  1  2  3
0      1  1  0  0
1      0  0  0  0
2      1  1  1  0
3      1  1  0  0
4      1  1  0  0
5      1  1  0  0
6      1  0  0  0
7      1  1  1  0
8      1  0  0  0
14989  1  1  1  1
14990  1  1  1  0
14991  1  1  1  1
14992  1  1  1  0

注意

我复制了您提供的示例数据框。 看起来像这样:

{{1}}

答案 1 :(得分:1)

我为您制作了样品。


    import itertools
    import random
    iter_list  = list(itertools.product([0,1],[0,1],[0,1],[0,1]))
    sum_list = []
    for i in range(1000):
        sum_list.append(random.choice(iter_list))

    target_df = pd.DataFrame(sum_list)
    target_df.reset_index().groupby(list(target_df.columns)).count().rename(columns ={'index':'count'}).reset_index()