gpt4 book ai didi

python - 在 Pandas 中使用 groupby 获得比例的更有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:29 25 4
gpt4 key购买 nike

我有以下 Pandas 数据框:

import pandas as pd

i1 = ["AA", "AA", "AA", "BB", "BB", "BB"]
i2 = ["B1", "B1", "B1", "A1", "A1", "A1"]
col1 = [1, 1, 1, 0, 1, 0]
col2 = [0, 0, 0, 1, 1, 0]
col3 = [1, 1, 0, 0, 0, 0]

df = pd.DataFrame({"I1": i1,
"I2": i2,
"Col_1":col1,
"Col_2":col2,
"Col_3":col3})

我想做的是获取每列的每个 i1 和 i2 的 1 的比例。例如,I1=AAI2=B1 的值应为 Col_1=1,Col_2=0, Col_3=0.66

我正在使用以下代码获得所需的输出:

df.groupby(["I1", "I2"])[["Col_1", "Col_2", "Col_3"]].sum()/df.groupby(["I1", "I2"])[["Col_1", "Col_2", "Col_3"]].count()

但是我认为这不是最好的方法。任何帮助将不胜感激。

最佳答案

如果只有 10 值,则使用 mean,因为根据定义,mean求和/计数:

#mean of all numeric columns (without I1, I2)
df1 = df.groupby(["I1", "I2"]).mean()
#if need specify columns names
#df1 = df.groupby(["I1", "I2"])["Col_1", "Col_2", "Col_3"].mean()
print (df1)
Col_1 Col_2 Col_3
I1 I2
AA B1 1.000000 0.000000 0.666667
BB A1 0.333333 0.666667 0.000000

关于python - 在 Pandas 中使用 groupby 获得比例的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58930339/

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