以下是我的代码,但运行后上车点和下车点各只剩80多个,原始出租车轨迹数据有10千万+条,请问代码是哪里有问题吗?
data['空重_1']=data['空重'].shift(1)
data['change']=data['空重']-data['空重_1']
data=data.drop(['空重_1'],axis=1) #axis=0 为删掉某行; axis=1位删掉某列
data=data.loc[(data['change']==1) |(data['change']==-1)]
# 初始化上车点和下车点的列表
pickups = []
dropoffs = []
# 遍历数据,根据差值判断上车点和下车点
for index, row in data.iterrows():
# 只在index不是最后一行和第一行时才进行处理
if index < len(data) - 1 and index > 0 :
# 判断差值
if row['change'] == 1 :
# 乘客上车过程,选取上一行的数据(车载状态为0)作为上车点
# 同时保留相关列的信息
pickups.append({
'车牌号': data.iloc[index - 1]['车牌号'],
'时间': data.iloc[index - 1]['时间'],
'空重': 0, # 上车点车载状态为0
'lon': data.iloc[index - 1]['lon'],
'lat': data.iloc[index - 1]['lat'],
'geometry': data.iloc[index - 1]['geometry'] if 'geometry' in df.columns else None,
'事件类型': '上车点'
})
elif row['change'] == -1:
# 乘客下车过程,选取当前行的数据(车载状态为1)作为下车点
# 同时保留相关列的信息
dropoffs.append({
'车牌号': row['车牌号'],
'时间': row['时间'],
'空重': 1, # 上车点车载状态为1
'lon': row['lon'],
'lat': row['lat'],
'geometry': row['geometry'] if 'geometry' in df.columns else None,
'事件类型': '下车点'
})
# 将上车点和下车点的列表转换为DataFrame
pickup_df = pd.DataFrame(pickups)
dropoff_df = pd.DataFrame(dropoffs)
# 将结果保存到新的CSV文件中
pickup_df.to_csv('C:/Users/zyx20/Desktop/毕设/出租2019/taxi_pickups.csv', index=False)
dropoff_df.to_csv('C:/Users/zyx20/Desktop/毕设/出租2019/taxi_dropoffs.csv', index=False)