gpt4 book ai didi

python - pandas - 如何在有条件的 groupby 中创建多列?

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

我需要对数据框进行分组,但我需要创建两列,一列是简单计数,另一列是带条件的计数,如示例所示:

enter image description here

qtd_ok 列只计算那些有“OK”的

enter image description here

我试过了,但我不知道如何在同一个 groupby 中添加总计数:

df.groupby(['column1', 'column2', 'column3']).apply(lambda x : x['status'].sum() == 'OK')

最佳答案

首先使用 assign 创建辅助列 A然后按 agg 聚合sum 函数仅用于计算 OK 值和 size计算每组的所有值:

df = (df.assign(A=(df['status']== 'OK'))
.groupby(['column1', 'column2', 'column3'])['A']
.agg([('qtd_ok','sum'),('qtd','size')])
.astype(int)
.reset_index())

示例:

df = pd.DataFrame({
'column1':['a'] * 9,
'column2':['a'] * 4 + ['b'] * 5,
'column3':list('aaabaabbb'),
'status':list('aabaaabba'),
})

print (df)
column1 column2 column3 status
0 a a a a
1 a a a a
2 a a a b
3 a a b a
4 a b a a
5 a b a a
6 a b b b
7 a b b b
8 a b b a

df = (df.assign(A=(df['status']== 'a'))
.groupby(['column1', 'column2', 'column3'])['A']
.agg([('qtd_ok','sum'),('qtd','size')])
.astype(int)
.reset_index())
print (df)
column1 column2 column3 qtd_ok qtd
0 a a a 2 3
1 a a b 1 1
2 a b a 2 2
3 a b b 1 3

关于python - pandas - 如何在有条件的 groupby 中创建多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53414028/

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