我通过Spyder IDE运行Windows 10,Python 2.7。
我有一只叫DataFrame
的大熊猫df
:
df = pd.DataFrame({'fld1': ['x', 'x', 'x','x','y','y','y','z','z']
, 'fld2': ['a', 'b', 'c','c','a','b','c','a','b']})
>>> df
fld1 fld2
0 x a
1 x b
2 x c
3 x c
4 y a
5 y b
6 y c
7 z a
8 z b
我想计算构成fld2
的{{1}}的百分比,并将该百分比保存在fld1
中,以便该产品是fld3
和{{的唯一组合1}}。此代码的产品应如fld1
:
fld2
答案 0 :(得分:2)
您可以使用groupby
,size
并除以transform
创建的总和:
print df
fld1 fld2
0 x a
1 x b
2 x c
3 x c
4 y a
5 y b
6 y c
7 z a
8 z b
g = df.groupby(['fld1', 'fld2'])['fld1'].size()
print g
fld1 fld2
x a 1
b 1
c 2
y a 1
b 1
c 1
z a 1
b 1
dtype: int64
print g / g.groupby(level=0).transform(sum)
fld1 fld2
x a 0.250000
b 0.250000
c 0.500000
y a 0.333333
b 0.333333
c 0.333333
z a 0.500000
b 0.500000
dtype: float64