python - 在 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)
解决方案
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
推荐阅读
- ruby - Ruby CSV - 写在同一行而不覆盖?
- javascript - 如何在 Typescript 中正确创建 [Key: string]?
- sorting - 使用 SORT/ICEMAN 将 HEX 值替换为可变长度数据集中的另一个 HEX 值
- javascript - 如何将错误弹出窗口与字段中心对齐
- html - 带有 CSS Grid 的 Div 在 chrome 和 firefox 中的行为不一致
- flutter - 颤振,新的谷歌移动广告sdk出错
- geopy - 超过最大重试次数和 SSL 错误
- coldfusion - 在 ColdFusion 中加密/解密密码
- javascript - 使用 MAP 和 FILTER 根据 ID 映射数组并包含项目
- node.js - 在另一个 Node.js 应用程序中运行一个 Node.js 应用程序