我正在尝试重新创建 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
您正在寻找
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