根据分组的 2 个字段计算行数[重复]

问题描述 投票:0回答:1

我正在尝试重新创建 Alteryx 中使用的 MultiRow 工具。 我想按两列(DATE、CALL_ID)对数据进行分组,然后对每个组的每行进行运行计数。 我正在使用 groupby,但我认为这是不对的,因为我不希望对输出进行分组,也不希望对数据进行聚合,我希望每一行仍然存在。

示例数据:

DATE        CALL_ID   
2023-11-21  29933702  
2023-11-21  29933703    
2023-11-21  29933703    
2023-11-21  29933704    
2023-11-21  29933704    

我想要的输出是:

DATE        CALL_ID    COUNT
2023-11-21  29933702    1
2023-11-21  29933703    1
2023-11-21  29933703    2
2023-11-21  29933704    1
2023-11-21  29933704    2

输出

#My code: 
g = df.groupby(['DATE','CALL_ID']).size()

DATE        CALL_ID 
2023-11-21  29933702    1
            29933703    2
            29933704    2

pandas group-by count size cumsum
1个回答
0
投票

您正在寻找

cumcount

import pandas as pd

df = pd.DataFrame({'DATE':['2023-11-21']*5, 'CALL_ID': [29933702, 29933703, 29933703, 29933704, 29933704]})

df['COUNT'] = df.groupby(['DATE', 'CALL_ID']).cumcount() + 1

print(df)

输出:

         DATE   CALL_ID  COUNT
0  2023-11-21  29933702      1
1  2023-11-21  29933703      1
2  2023-11-21  29933703      2
3  2023-11-21  29933704      1
4  2023-11-21  29933704      2
© www.soinside.com 2019 - 2024. All rights reserved.