首页 > 解决方案 > 在 pandas 中使用 apply 迭代后缀

问题描述

我正在尝试将 Pandas 中的 apply 函数与 lambda 一起使用来创建命名值。

我有TIME列,我想要ACT_NUM列如下所示。

df
TIME    ACT_NUM
3       act_1
3       act_1
4       act_1
12      act_2
3       act_2
15      act_3

通缉列的逻辑:当TIME列中的值> 10时,我想将后缀号永久增加1 。

我已经尝试过了,但它不起作用,因为n在使用apply.

n = 1
df['ACT_NUM'] = df['TIME'].apply(lambda x: 'act_'+(n+1) if x>10 else 'act_'+n)

标签: pythonpandas

解决方案


df.cumsum() ondf["TIME"] > 10似乎是您正在寻找的。cumsum 从 0 开始,每当df["TIME"] > 10遇到带有的行时加 1。

代码

df["ACT_NUM"] = (df["TIME"] > 10).cumsum().apply(lambda el: f"act_{el + 1}")

结果

print(df)
   TIME ACT_NUM
0     3   act_1
1     3   act_1
2     4   act_1
3    12   act_2
4     3   act_2
5    15   act_3

推荐阅读