import pandas as pd #
import numpy as np
import warnings
warnings.filterwarnings('ignore')
pd.set_option('display.max_rows',None)
# 显示所有行
df = pd.read_excel('Book1_final.xlsx') #读取源数据
df_group = df.groupby(by='Veh.ID').size().index # 取相同的值
df1 = df[df['Veh.ID'] == 17] # 去除第一组
list_sum = [] # 分离源数据
list_finally = [] # 存储最终数据
list_finally.append(df1) # 提前加入第一个数据
for i in df_group: # 分离源数据
list1 = df[df['Veh.ID'] == i]
list_sum.append(list1)
for i, j in zip(list_sum[0:5], list_sum[1:6]): #筛选
list3 = [0] * j.shape[0] # 预设为0
list4 = [0] * j.shape[0]
for k, m ,h in zip(i['Time'], i['Speed'], i['Distance']):
for l, n , b, a in zip(j['Time'], j['Speed'], j['Distance'], range(len(list3))):
if k == l: # 时间条件
list3[a] = m - n # 计算
list4[a] = h - b
j['△V'] = list3 # 添加数值
j['△S'] = list4 # 添加数值
list_finally.append(j) # 存储最终数据
df_finally = pd.DataFrame()
for i in list_finally: #合并
df_finally = pd.concat([df_finally, i])
df_finally['△V'][df_finally['△V'] == 0] = np.nan #处理0值
df_finally['△S'][df_finally['△S'] == 0] = np.nan
df_finally.to_csv('total.csv', encoding='gb2312', index=None) # 写入数据
目的是计算相邻路距离、速度的差值,主要是理清逻辑关系。提前设置数据列并设置为零是为提前站好位置,放置漏掉数据,而后将零设置为nan