如何在熊猫数据框中按条件累计计算几列[重复]
Posted
技术标签:
【中文标题】如何在熊猫数据框中按条件累计计算几列[重复]【英文标题】:How to cumulutive count several columns by condition in pandas dataframe [duplicate] 【发布时间】:2021-02-28 19:47:32 【问题描述】:示例数据框:
df = pd.DataFrame('column_1':['a','a','a','a','a','a','b','b','b','b','b','b','b','b','b','c','c','d','d']
,'column_2':[1,1,1,2,2,2,1,1,1,2,2,2,3,3,3,1,2,2,3]
)
我想按条件计算每对列,编号从 1 到 N。 我想,我必须使用apply函数,但不知道如何写它的实现。
使用 .loc 循环非常慢(过滤原因)
for column_1 in df.column_1.unique():
for column_2 in df.column_2.unique():
condition = (df.column_1 == column_1)&(df.column_2 == column_2)
max_range = sum(condition)
df.loc[condition, 'result'] = range(1, max_range + 1)
df.result = df.result.astype(int)
结果:
【问题讨论】:
【参考方案1】:这是groupby().cumcount()
:
df['result'] = df.groupby(['column_1','column_2']).cumcount()+1
输出:
column_1 column_2 result
0 a 1 1
1 a 1 2
2 a 1 3
3 a 2 1
4 a 2 2
5 a 2 3
6 b 1 1
7 b 1 2
8 b 1 3
9 b 2 1
10 b 2 2
11 b 2 3
12 b 3 1
13 b 3 2
14 b 3 3
15 c 1 1
16 c 2 1
17 d 2 1
18 d 3 1
【讨论】:
以上是关于如何在熊猫数据框中按条件累计计算几列[重复]的主要内容,如果未能解决你的问题,请参考以下文章