gpt4 book ai didi

python - Python Pandas 是否有办法指定一个列来计算值组合的每次出现?

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

我有一个包含 22 列的 Pandas 数据框,用于处理建筑评估,但是,我只关注两个特定的列。这两列是数字建筑物 ID 和评估阶段,指示相应建筑物 ID 处于哪个阶段。基本上,我想做的是计算这两列中值组合的出现次数,并将这些计数存储在序数列。详情如下:

  Building ID   | Assessment Phase
-----------------------------------
001 Phase 1
002 Phase 2
002 Phase 2
003 Phase 3
003 Phase 2
003 Phase 3
004 Unk
004 Phase 1
005 Phase 2

您会注意到有重复的 ID 和看起来相同的评估。我想要按建筑物 ID 和评估阶段分组的每个类似事件的累积行数。它应该看起来像这样:

  Building ID   | Assessment Phase | Bldg_Phs_Ord
--------------------------------------------------
001 Phase 1 1
002 Phase 2 1
002 Phase 2 2
003 Phase 3 1
003 Phase 3 2
003 Phase 3 3
004 Unk 1
004 Phase 1 1
005 Phase 2 1

可以看出,每个组合都有单独的计数。一些组合重复几次,其中每个后续组合都放在自己的行中。

我尝试过的是测试它是否正确输出:

test_cnt = bldg_df.groupby(['Building ID', 'Assessment Phase']).size().to_frame('COUNT').sort_values(by=['Building ID']).reset_index()

不幸的是,只要有多个重复组合,这就会将组合聚合在一起。

     Building ID   | Assessment Phase | COUNT
--------------------------------------------------
001 Phase 1 1
002 Phase 2 2
003 Phase 3 3
004 Unk 1
004 Phase 1 1
005 Phase 2 1

我应该添加什么才能返回每个单独的累积行数?

谢谢。

最佳答案

IIUC 你正在寻找 cumcount:

df["count"] = df.groupby(['Building ID', 'Assessment Phase']).cumcount()+1

print (df)

Building ID Assessment Phase count
0 1 Phase 1 1
1 2 Phase 2 1
2 2 Phase 2 2
3 3 Phase 3 1
4 3 Phase 3 2
5 3 Phase 3 3
6 4 Unk 1
7 4 Phase 1 1
8 5 Phase 2 1

关于python - Python Pandas 是否有办法指定一个列来计算值组合的每次出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63178121/

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