我有这样的数据框
id Date
546451991 2018-07-31 00:00:00
546451991 2018-08-02 00:00:00
5441440119 2018-08-13 00:00:00
5441440119 2018-08-13 00:00:00
5441440119 2018-08-14 00:00:00
5344265358 2018-07-13 00:00:00
5344265358 2018-07-15 00:00:00
5441438884 2018-07-19 00:00:00
我想按“ID”分组,然后根据日期排序,然后添加包含下一个行的日期的列
例如我想要这样的输出
id Date Date1
546451991 2018-07-31 00:00:00 2018-08-02 00:00:00
546451991 2018-08-02 00:00:00 NULL
5441440119 2018-08-13 00:00:00 2018-08-14 00:00:00
5441440119 2018-08-14 00:00:00 2018-08-15 00:00:00
5441440119 2018-08-15 00:00:00 NULL
5344265358 2018-07-13 00:00:00 2018-07-15 00:00:00
5344265358 2018-07-15 00:00:00 NULL
5441438884 2018-07-19 00:00:00 NULL
我尝试过但没有成功
df.groupby('id')['Date'].sort_values()
不起作用
最佳答案
df['Date1'] = df.groupby('id')['Date'].apply(lambda x: x.sort_values().shift(-1))
输出:
Date id Date1
0 2018-07-3100:00:00 546451991 2018-08-0200:00:00
1 2018-08-0200:00:00 546451991 NaN
2 2018-08-1300:00:00 5441440119 2018-08-1300:00:00
3 2018-08-1300:00:00 5441440119 2018-08-1400:00:00
4 2018-08-1400:00:00 5441440119 NaN
5 2018-07-1300:00:00 5344265358 2018-07-1500:00:00
6 2018-07-1500:00:00 5344265358 NaN
7 2018-07-1900:00:00 5441438884 NaN
编辑
来自 Sandeep 输入
df['Date1'] = df.groupby('id')['Date'].shift(-1)
关于python - 应用groupby后如何在数据框中添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52234103/