【发布时间】:2020-06-24 14:54:52
【问题描述】:
我有df,在它下面我根据ID变量和时间变量T作为次要排序。
df = pd.DataFrame({
'ID': ['a', 'b', 'c', 'b', 'b'],
'T': [
datetime.datetime(2019, 1, 1),
datetime.datetime(2017, 1, 1),
datetime.datetime(2018, 1, 1),
datetime.datetime(2020, 1, 1),
datetime.datetime(2021, 1, 1)],
'V': [3, 5, 8, 6, 1]
}).sort_values(['ID', 'T'], ascending=False)
df
ID T V
2 c 2018-01-01 8
4 b 2021-01-01 1
3 b 2020-01-01 6
1 b 2017-01-01 5
0 a 2019-01-01 3
我想添加一个新列 V_L,其中显示每个 ID 的最后一个值(基于时间列 T)。如果没有最后一个值,这应该由V_L 中的null 值指示。示例输出如下所示:
df
ID T V V_L
0 a 2018-01-01 8 NaN
1 b 2021-01-01 1 6.0
2 b 2020-01-01 6 5.0
3 b 2017-01-01 5 NaN
4 c 2019-01-01 3 NaN
【问题讨论】:
-
df['V_L'] = df.groupby('ID')['V'].shift(-1) -
你的 ID 是如何升序排列的?