当前位置:  开发笔记 > 编程语言 > 正文

获取pandas数据帧中所有唯一行的计数

如何解决《获取pandas数据帧中所有唯一行的计数》经验,为你挑选了1个好方法。

我有一个Pandas DataFrame -

>>> import numpy as np
>>> import pandas as pd
>>> data = pd.DataFrame(np.random.randint(low=0, high=2,size=(5,3)),
...                       columns=['A', 'B', 'C'])
>>> data
   A  B  C
0  0  1  0
1  1  0  1
2  1  0  1
3  0  1  1
4  1  1  0

现在我用它来获取仅A列的行数

>>> data.ix[:, 'A'].value_counts()
1    3
0    2
dtype: int64

获得A列和B列的行数最有效的方法是什么,例如以下输出 -

0    0    0
0    1    2
1    0    2
1    1    1

然后最后我怎么能把它转换成一个numpy数组,如 -

array([[0, 2],
       [2, 1]])

请给出一个与之一致的解决方案

>>>> data = pd.DataFrame(np.random.randint(low=0, high=2,size=(5,2)),
...                       columns=['A', 'B'])

Andy Hayden.. 10

您可以使用groupby 大小然后取消堆栈:

In [11]: data.groupby(["A","B"]).size()
Out[11]:
A  B
0  1    2
1  0    2
   1    1
dtype: int64

In [12]: data.groupby(["A","B"]).size().unstack("B")
Out[12]:
B   0  1
A
0 NaN  2
1   2  1

In [13]: data.groupby(["A","B"]).size().unstack("B").fillna(0)
Out[13]:
B  0  1
A
0  0  2
1  2  1

但是,无论何时执行groupby后跟一个unstack,你都应该考虑:pivot_table:

In [21]: data.pivot_table(index="A", columns="B", aggfunc="count", fill_value=0)
Out[21]:
   C
B  0  1
A
0  0  2
1  2  1

这将是最有效的解决方案,也是最直接的解决方案.



1> Andy Hayden..:

您可以使用groupby 大小然后取消堆栈:

In [11]: data.groupby(["A","B"]).size()
Out[11]:
A  B
0  1    2
1  0    2
   1    1
dtype: int64

In [12]: data.groupby(["A","B"]).size().unstack("B")
Out[12]:
B   0  1
A
0 NaN  2
1   2  1

In [13]: data.groupby(["A","B"]).size().unstack("B").fillna(0)
Out[13]:
B  0  1
A
0  0  2
1  2  1

但是,无论何时执行groupby后跟一个unstack,你都应该考虑:pivot_table:

In [21]: data.pivot_table(index="A", columns="B", aggfunc="count", fill_value=0)
Out[21]:
   C
B  0  1
A
0  0  2
1  2  1

这将是最有效的解决方案,也是最直接的解决方案.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有