【发布时间】:2019-08-18 21:02:29
【问题描述】:
更新
我有一个如下所示的 df:
print(df)
id rank a
date
2000-01-01 1 1.0 0
2000-01-01 2 3.0 0
2000-01-01 3 2.0 0
2000-01-01 4 0.0 0
2000-01-02 1 2.0 0
2000-01-02 2 3.0 0
2000-01-02 3 2.0 0
2000-01-02 4 1.0 0
2000-01-03 1 3.0 0
2000-01-03 2 2.0 0
2000-01-03 3 1.0 0
2000-01-03 4 1.0 0
我想创建一个新变量 a,如果 rank 与上个月相比发生变化,则该变量等于 1。例如,在 2000-01-01 中,rank 是 3.0,而在 2000-01-02 中它更改为 2.0。我希望此更改与 a 中的 1 相对应,如果没有更改,则保持 0。我也想分组 id。此外,排名只能在每个时期增加 1。
预期输出
id rank a
date
2000-01-01 1 1.0 1
2000-01-01 2 3.0 1
2000-01-01 3 2.0 1
2000-01-01 4 0.0 1
2000-01-02 1 2.0 1
2000-01-02 2 3.0 0
2000-01-02 3 2.0 0
2000-01-02 4 1.0 1
2000-01-03 1 3.0 1
2000-01-03 2 2.0 1
2000-01-03 3 1.0 1
2000-01-03 4 1.0 0
任何帮助都会很棒!
【问题讨论】:
-
a看起来不像variable。 -
a中的第一个值是缺失值吗?还是空字符串? -
如果排名一步变化 >1,您可能应该澄清预期的输出。
-
更新了,因为我现在也需要与
id分组! -
@oceanbeach96 - 已编辑答案。