Python 在pandas中使用apply迭代后缀
我试图使用Pandas中的apply函数和lambda来创建命名值 我有Python 在pandas中使用apply迭代后缀,python,pandas,Python,Pandas,我试图使用Pandas中的apply函数和lambda来创建命名值 我有TIME列,我想要ACT\u NUM列,如下所示 df TIME ACT_NUM 3 act_1 3 act_1 4 act_1 12 act_2 3 act_2 15 act_3 所需列的逻辑:当时间列中的值大于10时,我希望将后缀数永久地增加1 我尝试过这个方法,但它不起作用,因为在使用apply时,我无法将变量n逐行集成 n = 1 df['A
TIME
列,我想要ACT\u NUM
列,如下所示
df
TIME ACT_NUM
3 act_1
3 act_1
4 act_1
12 act_2
3 act_2
15 act_3
所需列的逻辑:当时间列中的值大于10时,我希望将后缀数永久地增加1
我尝试过这个方法,但它不起作用,因为在使用apply
时,我无法将变量n
逐行集成
n = 1
df['ACT_NUM'] = df['TIME'].apply(lambda x: 'act_'+(n+1) if x>10 else 'act_'+n)
只需使用str(n+1)
和str(n)
将数字转换为字符串:
df['ACT_NUM'] = df['TIME'].apply(lambda x: 'act_'+str(n+1) if x>10 else 'act_'+str(n))
在df[“TIME”]>10上,您似乎正在寻找。每当遇到df[“TIME”]>10的行时,总和从0开始,并增加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
@比尔黄。预期的输出是“ACT_NUM”列。很抱歉弄得一团糟,我刚把它清理干净。我是这个网站的新手,没有一个显示DataFrame的好方法,格式还可以。但是你可以编辑这篇文章来展示你所拥有的和你想要的吗?此外,IIRC,最后一行不是应该是第15幕吗?