gpt4 book ai didi

python - 有条件地查找字段 2 中出现的百分比,给定 DataFrame 中的字段 1

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:51 26 4
gpt4 key购买 nike

我正在通过 Spyder IDE 运行 Windows 10、Python 2.7。

我有一个名为 df 的 pandas DataFrame:

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

我想计算构成 fld1fld2 的百分比,并将该百分比保存在 fld3 中,以便产品是唯一组合fld1fld2。此代码的产品应类似于 df2:

df2 = pd.DataFrame({'fld1': ['x', 'x', 'x','y','y','y','z','z']
, 'fld2': ['a', 'b', 'c','a','b','c','a','b']
, 'fld3': [.25,.25,.50,.33,.33,.33,.5,.5]})
>>> df2
fld1 fld2 fld3
0 x a 0.25
1 x b 0.25
2 x c 0.50
3 y a 0.33
4 y b 0.33
5 y c 0.33
6 z a 0.50
7 z b 0.50

最佳答案

您可以使用 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

关于python - 有条件地查找字段 2 中出现的百分比,给定 DataFrame 中的字段 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com