gpt4 book ai didi

python - 根据另一列对一列进行分箱并交叉制表

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:56 25 4
gpt4 key购买 nike

我的数据是这样的:

        CPB% Bin
0 0.011368 A
1 0.011397 A
2 0.011946 A
3 0.011353 A
4 0.011382 A
5 0.016643 A
6 0.018974 A
7 0.011828 A
8 0.010999 A
9 0.008970 B
10 0.008988 B
11 0.009070 B
12 0.009089 A
13 0.009089 A
14 0.008978 B
15 0.009951 A
16 0.011174 A
17 0.008976 B
18 0.010339 A
19 0.012273 A
20 0.009694 A
21 0.007221 B
22 0.015916 A
23 0.007943 B
24 0.008711 B

我需要的是:

           CPB% Bin-A Bin-B
0.01 20 15 5
0.02 30 15 15
0.03 75 50 25
0.04 67 50 17

我试过的是:

bins = np.linspace(0, 1, num=1000)
df_b = pd.DataFrame(pd.cut(df['CPB%'], bins=bins).value_counts()).sort_index(ascending = True)

但是我不知道如何在 A 和 B 之间传播和计算特定集群(例如 0.01)的 CPB% 的数量。知道吗?谢谢!

最佳答案

使用pd.crosstab交叉制表计数:

pd.crosstab(pd.cut(df['CPB%'], bins=bins), df.Bin)

示例使用 pd.qcut (不要与 pd.cut 混淆)以 bin 作为分位数:

pd.crosstab(pd.qcut(df['CPB%'], 4), df.Bin)

Bin A B
CPB%
(0.00622, 0.00899] 0 7
(0.00899, 0.0103] 5 1
(0.0103, 0.0114] 6 0
(0.0114, 0.019] 6 0

如果你想把区间的左边作为索引标签,你可以这样做

import operator
pd.crosstab(pd.qcut(df['CPB%'], 4).map(operator.attrgetter('left')), df.Bin)
# On v0.24,
# pd.crosstab(pd.qcut(df['CPB%'], 4).arrays.left, df.Bin)

Bin A B
CPB%
0.00622 0 7
0.00899 5 1
0.01030 6 0
0.01140 6 0

关于python - 根据另一列对一列进行分箱并交叉制表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54134564/

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