【发布时间】:2021-12-03 16:04:20
【问题描述】:
我在数据框(df) 中有数据,类似于下面的结构
| ID | Sessions |
|---|---|
| 1234 | 400 |
| 5678 | 200 |
| 9101112 | 199 |
| 13141516 | 0 |
我想在数据框中创建一个新列 (new_col),根据会话值对每个示例进行排名,但我想确保排名中不考虑 0 个会话/清零。
我已尝试应用下面的 lambda,但这不正确:
df['new_col'] = df['Sessions'].apply(lambda x: 0 if x == 0 else df['Sessions'].rank(ascending=True, pct=True))
采样期望的输出
| ID | Sessions | new_col |
|---|---|---|
| 1234 | 400 | 1.000000 |
| 5678 | 200 | 0.999987 |
| 9101112 | 199 | 0.999974 |
| 13141516 | 0 | 0 |
【问题讨论】:
-
您能再添加几行示例数据吗? “每个会话值的每个示例”是什么意思?每个ID都是这样吗?预期的输出会很有用
-
@EmiOB 刚刚添加到我的原始帖子中 - 排名功能对我有用 (
df['Sessions'].rank(ascending=True, pct=True)) 我只是想确保是否有 0 个会话 new_col 值为 0 - 现在不是发生
标签: python pandas dataframe lambda