累积条件计数
Posted
技术标签:
【中文标题】累积条件计数【英文标题】:Cumulative conditional count 【发布时间】:2019-07-03 03:42:36 【问题描述】:我有以下数据框。
df = pd.DataFrame(
"drive": [1,1,2,2,2,3,3,3,4,4,4,5,5,6,6,7,7],
"team": ['home','home','away','away','away','home','home','home','away',
'away','away','home','home','away','away','home','home'],
"home_comfy_lead": [0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1],
"home_drives": [1,1,0,0,0,2,2,2,0,0,0,3,3,0,0,4,4],
'home_drives_with_comfy_lead': [0,0,0,0,0,0,0,1,0,0,0,2,2,0,0,3,3]
)
我正在尝试制作两列:
一个 home_drives
列唯一地计算来自
drive
列基于来自 team
的“家”指定
列。
一个 home_drives_with_comfy_lead
列唯一地计算
home_drives
的值基于 home_comfy_lead
是否为真。
我想要的输出是:
drive team home_comfy_lead home_drives home_drives_with_comfy_lead
0 1 home 0 1 0
1 1 home 0 1 0
2 2 away 0 0 0
3 2 away 0 0 0
4 2 away 0 0 0
5 3 home 0 2 0
6 3 home 0 2 0
7 3 home 1 2 1
8 4 away 0 0 0
9 4 away 0 0 0
10 4 away 0 0 0
11 5 home 1 3 2
12 5 home 1 3 2
13 6 away 0 0 0
14 6 away 0 0 0
15 7 home 1 4 3
16 7 home 1 4 3
有人可以帮忙吗?这几天我一直在为此苦苦挣扎。
【问题讨论】:
欢迎来到 SO。请花时间阅读 ***.com/help/how-to-ask。它将帮助您提出可靠的问题,希望得到有用的答案 你能告诉你到目前为止你尝试了什么吗? @orde,对不起。我的问题不够具体吗?在发布问题之前我确实阅读过,所以我希望它足够清楚。 @anishtain4 我尝试了 np.where、groupby 和 cumcount 的组合。我无法在 SO 上找到任何解决此问题的内容,所以这主要是在黑暗中拍摄。 【参考方案1】:使用.where
屏蔽,然后使用groupby
+ ngroup
。在这里,我们很幸运 NaN
组被分配了 -1 并且您还希望从 1 开始计数,因此添加 +1 同时修复了这两个问题。
df['home_drives'] = df.where(df.team == 'home').groupby('drive').ngroup()+1
df['hdwcl'] = df.where(df.home_comfy_lead == 1).groupby('home_drives').ngroup()+1
输出:
drive team home_comfy_lead home_drives hdwcl
0 1 home 0 1 0
1 1 home 0 1 0
2 2 away 0 0 0
3 2 away 0 0 0
4 2 away 0 0 0
5 3 home 0 2 0
6 3 home 0 2 0
7 3 home 1 2 1
8 4 away 0 0 0
9 4 away 0 0 0
10 4 away 0 0 0
11 5 home 1 3 2
12 5 home 1 3 2
13 6 away 0 0 0
14 6 away 0 0 0
15 7 home 1 4 3
16 7 home 1 4 3
【讨论】:
这是完美的。谢谢!以上是关于累积条件计数的主要内容,如果未能解决你的问题,请参考以下文章