我有一个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'])
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接着拆散你应该想: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
这将是最有效的解决方案,也是最直接的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句