我有一个数据框
plane Time Time_difference
1 180 0
1 195 15
1 3000 2805
1 3100 100
2 2323 0
2 2665 342
我想添加一列“行程”,如果Time_difference大于 500,它将开始新的行程,行程计数增加1,并且(如果Time_difference小于500,则行程编号应相同。 对于不同的飞机,旅行次数应重新从1开始
plane Time Time_difference trip
1 180 0 1
1 195 15 1
1 3000 2805 2
1 3100 100 2
2 2323 0 1
2 2665 342 1
我尝试了以下方法,但是对于不同的飞机,旅程并没有从1开始。
def rollin(diff):
if diff >= threshold:
rollin.count += 1
else:
rollin.count
return rollin.count
rollin.count = 0
df2["trip"] = df2["Time_difference"].apply(rollin)
答案 0 :(得分:0)
首先创建一个“旅行”列:
df['trip'] = 0
然后将每个平面组的第一行设置为值1。
df.loc[df.groupby('plane').head(1).index,'trip'] = 1
然后将“行程”列的任何Time_difference> 500设置为1
df.loc[df['Time_difference']>500, 'trip'] =1
然后按“飞机”分组取积
df['trip'] = df.groupby('plane')['trip'].cumsum()
print(df)
plane Time Time_difference trip
0 1 180 0 1
1 1 195 15 1
2 1 3000 2805 2
3 1 3100 100 2
4 2 2323 0 1
5 2 2665 342 1