gpt4 book ai didi

python - Pandas 集团 : % of boolean flags which are True

转载 作者:行者123 更新时间:2023-12-04 14:49:36 25 4
gpt4 key购买 nike

以下是我的数据的一个最小示例:

   Id Session Flag toSum
0 1 1 1 2
1 1 2 0 4
2 1 3 0 5
3 1 4 1 6
4 1 5 1 3
5 1 6 0 0
6 1 7 1 1
7 2 1 0 4
8 2 2 1 6
9 2 3 0 2
10 3 1 1 4
11 4 1 1 2
12 4 2 0 1
13 4 3 0 5
14 4 4 1 10

可以复制:

df = pd.DataFrame({
'Id': [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4, 4],
'Session':[1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 1, 1, 2, 3, 4],
'Flag': [1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1],
'toSum': [2, 4, 5, 6, 3, 0, 1, 4, 6, 2, 4, 2, 1, 5, 10]
})

我想按 Id 分组,并将 Flag 列聚合为每个 Id 标记的百分比,并将 toSum 列聚合为每个 Id 的总和。

即,产生:

    Id  Flag %  toSum
0 1 57.14 21
1 2 33.33 12
2 3 100.0 4
3 4 50.0 18

如何实现?

最佳答案

首先聚合meansum 然后如果需要改变列的格式:

#trick for pass column name with space to agg
df = df.groupby('Id', as_index=False).agg(**{'Flag %':('Flag', 'mean'),
'toSum': ('toSum', 'sum')})

df['Flag %'] = df['Flag %'].mul(100).round(2)
print (df)
Id Flag % toSum
0 1 57.14 21
1 2 33.33 12
2 3 100.00 4
3 4 50.00 18

或者:

df = df.groupby('Id', as_index=False).agg({'Flag': 'mean', 'toSum': sum})

df['Flag'] = df['Flag'].map("{:.2%}".format)
print (df)
Id Flag toSum
0 1 57.14% 21
1 2 33.33% 12
2 3 100.00% 4
3 4 50.00% 18

关于python - Pandas 集团 : % of boolean flags which are True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69253238/

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