gpt4 book ai didi

python - 具有扩展列的 Pandas GroupBy 函数

转载 作者:行者123 更新时间:2023-12-05 03:20:10 24 4
gpt4 key购买 nike

我有下表:

<表类="s-表"><头><日> 品牌产品<正文>0耐克鞋子1耐克 socks 2阿迪达斯鞋子3阿迪达斯鞋子4阿迪达斯 socks 5飞行短裤

我想使用 Pandas GroupBy 函数生成下表(行和列的总计)以查找特定品牌-产品对的出现次数。

<表类="s-表"><头><日> 鞋子 socks 短裤总计<正文>耐克1102阿迪达斯2103飞行0011总计3216

然后想根据百分比转换单元格:

  • 单元格百分比来自单元格值除以列总数(例如,{Shoes, Adidas} = 2/3 = 67% 或 {Total, Adidas} = 3/6 = 50%)
<表类="s-表"><头><日> 鞋子 socks 短裤总计<正文>耐克50%50%0%33%阿迪达斯67%50%0%50%飞行0%0%100%17%总计100%100%100%100%

另外,最后一点,有没有办法将所有单元格数乘以一个调整因子(例如 0.75)

最佳答案

试试 pd.crosstab:

out = pd.crosstab(df["Brand"], df["Product"])
out["Total"] = out.sum(axis=1)
out.index.name, out.columns.name = None, None
print(out)

打印:

        Shoes  Shorts  Socks  Total
Adidas 2 0 1 3
Flight 0 1 0 1
Nike 1 0 1 2

编辑:要获得百分比,你可以在之后做:

out.iloc[:, :-1] = (
out.iloc[:, :-1]
.div(out["Total"], axis=0)
.mul(100)
.round(0)
.astype(int)
.astype(str)
+ "%"
)

out["Total"] = (
out["Total"]
.div(out["Total"].sum())
.mul(100)
.round(0)
.astype(int)
.astype(str)
+ "%"
)

打印:

       Shoes Shorts Socks Total
Adidas 67% 0% 33% 50%
Flight 0% 100% 0% 17%
Nike 50% 0% 50% 33%

关于python - 具有扩展列的 Pandas GroupBy 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73256138/

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