Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算数据帧中的唯一值?_Python_Pandas - Fatal编程技术网

Python 如何计算数据帧中的唯一值?

Python 如何计算数据帧中的唯一值?,python,pandas,Python,Pandas,我有一个看起来像Y= 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

我有一个看起来像
Y=

       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]
共有5个唯一值:

1  1  0  0
0  0  0  0
1  1  1  0
1  0  0  0
1  1  1  1

对于每个唯一值,我想计算它在
Y
DataFrame
中的次数,我们可以使用
.groupby
来获得唯一的组合。 应用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

我们可以使用
.groupby
来获得唯一的组合。 应用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

让我们使用
np.unique

c,v=np.unique(df.values,axis=0,return_counts =True)
c
array([[0, 0, 0, 0],
       [1, 0, 0, 0],
       [1, 1, 0, 0],
       [1, 1, 1, 0]], dtype=int64)
v
array([1, 2, 4, 2], dtype=int64)

让我们使用
np.unique

c,v=np.unique(df.values,axis=0,return_counts =True)
c
array([[0, 0, 0, 0],
       [1, 0, 0, 0],
       [1, 1, 0, 0],
       [1, 1, 1, 0]], dtype=int64)
v
array([1, 2, 4, 2], dtype=int64)
我给你做了样品


    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()

我给你做了样品


    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()


这可以获得唯一行,但我认为理想的结果是计算原始数据帧中每个唯一行的出现次数。这可以获得唯一行,但我认为理想的结果是计算原始数据帧中每个唯一行的出现次数。