我有一个按人次旅行的数据集(trips_data
)。每个观察结果都是一次旅行,其中包含旅行的开始时间(strttime
,旅行的结束时间(endtime
)和旅行的人。对于某些人来说,旅行的结束时间晚于下一次旅行的开始时间。这是一个使用hhmm格式的时间的示例:
TRIPID clepersonne strttime endtime
90 100010413 10001041 1600 1614
91 100010414 10001041 1615 1648
92 100010415 10001041 1645 1726
93 100010416 10001041 1930 1954
94 100010621 10001062 900 921
95 100010622 10001062 1000 1013
对于同一个人TRIPID
,100010414
strttime
的终止晚于下一次旅行100010415
的{{1}}。我想通过在下一次旅行的开始时间之前替换旅行10001041
的{{1}}来纠正这种不一致。对于此示例,我想要的结果是:
endtime
我尝试这样做:
100010414
但是我得到这个错误:
TRIPID clepersonne strttime endtime
90 100010413 10001041 1600 1614
91 100010414 10001041 1615 *1645*
92 100010415 10001041 1645 1726
93 100010416 10001041 1930 1954
94 100010621 10001062 900 921
95 100010622 10001062 1000 1013
你能帮我吗? 谢谢
答案 0 :(得分:0)
使用:
next_start=df.groupby('clepersonne')['strttime'].shift(-1)
mask=df['endtime'].sub(next_start)>0
df['endtime']=df['endtime'].mask(mask,next_start)
print(df)
TRIPID clepersonne strttime endtime
90 100010413 10001041 1600 1614
91 100010414 10001041 1615 1645
92 100010415 10001041 1645 1726
93 100010416 10001041 1930 1954
94 100010621 10001062 900 921
95 100010622 10001062 1000 1013