Python 在另一列中使用值';s按组显示上一行
数据Python 在另一列中使用值';s按组显示上一行,python,pandas,Python,Pandas,数据 Division Name start_date A apple 2001-01-05 A banana 2001-03-06 A apple 2001-06-08 A orange 2001-07-09 B peach 2001-01-10 B melon 2001-06-02 B be
Division Name start_date
A apple 2001-01-05
A banana 2001-03-06
A apple 2001-06-08
A orange 2001-07-09
B peach 2001-01-10
B melon 2001-06-02
B berry 2001-08-19
我需要创建一个结束日期,它是同一部门下一个人的开始日期。对于最后一个观察到的人,没有结束日期,所以我将把今天的日期改为2019-04-06
目标
Division Name start_date end_date
A apple 2001-01-05 2001-03-06
A banana 2001-03-06 2001-06-08
A apple 2001-06-08 2001-07-09
A orange 2001-07-09 2019-04-06
B peach 2001-01-10 2001-06-02
B melon 2001-06-02 2001-08-19
B berry 2001-08-19 2019-04-06
我试过了
data['end_date'] = data.groupby('Division')['start_date'].index+1
但收到一条错误消息:
AttributeError: Cannot access attribute 'index' of 'SeriesGroupBy' objects, try using the 'apply' method
有人知道如何解决这个问题吗
非常感谢 您可以进行除法并向上一行
df['end_date'] = df.groupby('Division').start_date.shift(-1)
然后用今天的日期填写fillna()
df = df.fillna(datetime.date.today())
Division Name start_date end_date
0 A apple 2001-01-05 2001-03-06
1 A banana 2001-03-06 2001-06-08
2 A apple 2001-06-08 2001-07-09
3 A orange 2001-07-09 2019-04-06
4 B peach 2001-01-10 2001-06-02
5 B melon 2001-06-02 2001-08-19
6 B berry 2001-08-19 2019-04-06
这个很好用!!非常感谢@RafaelC!!