Pandas 如果ID相同,则逐行减去日期
如果下一行的id相同,我想减去日期。我能够减去日期,但仍然坚持创建条件来检查下一行是否具有相同的idPandas 如果ID相同,则逐行减去日期,pandas,Pandas,如果下一行的id相同,我想减去日期。我能够减去日期,但仍然坚持创建条件来检查下一行是否具有相同的id d = {'date':['2021-01', '2020-01', '2020-05', '2021-01'], 'id':['a', 'a', 'b', 'b']} df = pd.DataFrame(data=d) 我的代码 df = df.sort_values(by=['id', 'date']) df['date_diff'] = pd.to_datetime(df['date']
d = {'date':['2021-01', '2020-01', '2020-05', '2021-01'], 'id':['a', 'a', 'b', 'b']}
df = pd.DataFrame(data=d)
我的代码
df = df.sort_values(by=['id', 'date'])
df['date_diff'] = pd.to_datetime(df['date']) - pd.to_datetime(df['date'].shift())
结果
date id date_diff
2020-01 a NaT
2021-01 a 366 days
2020-05 b -245 days
2021-01 b 245 days
预期结果如下所示,仅当ID相同时才减去日期
与groupby连锁
与groupby连锁
6秒慢的人@wwnde啊投票给U6秒慢的人@wwnde ah投票支持美国
date id date_diff
2020-01 a NaT
2021-01 a 366 days
2020-05 b -245 days
2021-01 b 245 days
df['date']=pd.to_datetime(df['date'])
df['date_diff']=df.groupby('id')['date'].diff()
df['date'] = pd.to_datetime(df['date'])
df['date_diff'] = df.groupby('id')['date'].diff()