我有一个这样的数据框:
df = pd.DataFrame({'A': ['foo', 'bar', 'ololo'] * 4,
'B': np.random.randn(12),
'C': np.random.randint(0, 2, 12)})
之后,我这样做:
ga = df.groupby(['A'])
例如,我得到了:
bar
A B C
1 bar 0.393058 1
4 bar -1.105328 0
7 bar -0.042472 0
10 bar -0.865564 1
foo
A B C
0 foo 1.074720 1
3 foo -2.034497 0
6 foo 0.122219 1
9 foo -0.423785 0
ololo
A B C
2 ololo 0.227501 1
5 ololo 0.774087 0
8 ololo 1.146629 1
11 ololo 1.275878 0
如何计算每组中的'1'和'0'(在C列中)? 什么是最简单的计算方法?
答案 0 :(得分:1)
我的数据与您的数据不同但它应该适合您,在“C”列上调用value_counts()
:
In [391]:
df = pd.DataFrame({'A': ['foo', 'bar', 'ololo'] * 4,
'B': np.random.randn(12),
'C': np.random.randint(0, 2, 12)})
df
Out[391]:
A B C
0 foo 0.314818 1
1 bar 2.204360 1
2 ololo -0.290745 0
3 foo 1.346946 1
4 bar 1.129958 0
5 ololo 0.347720 0
6 foo -1.116949 0
7 bar -1.605924 1
8 ololo 1.997094 1
9 foo -1.290455 1
10 bar -1.829666 0
11 ololo -0.376138 0
In [395]:
ga = df.groupby(['A'])['C'].value_counts()
ga
Out[395]:
A
bar 1 2
0 2
foo 1 3
0 1
ololo 0 3
1 1
dtype: int64