найти последнюю информацию о поездке из большого фрейма данных - PullRequest
0 голосов
/ 26 марта 2020

У меня есть одно требование:

У меня есть фрейм данных "df_input" с 20M строками, который включает в себя детали поездки. столбцы: "№ транспортного средства", "геолокация", "начало", "конец" . Для каждого номера транспортного средства имеется несколько рядов, каждый из которых имеет разную геолокацию для разных поездок.

Теперь я хочу создать новый фрейм данных df_final , который будет иметь только первую запись для всего транспортного средства - нет. Как это можно сделать эффективным способом?

Я использовал что-то вроде ниже, на выполнение которого уходит более 5 часов:

import dfply as dp
from dfply import X
output_df_columns = ["vehicle-no","start", "end", "geolocations"] 
df_final = pd.DataFrame(columns = output_df_columns) #create empty dataframe
unique_vehicle_no = list(df_input["vehicle-no"].unique())
df_input.sort_values(["start"],inplace=True)

for each_vehicle in  unique_vehicle_no:
    df_temp = (df_input >> dp.mask(X.vehicle-no == each_vehicle))
    df_final = df_final.append(df_temp.head(1),ignore_index=True, sort=False)

1 Ответ

0 голосов
/ 26 марта 2020

Я думаю, что это сработает

import pandas as pd
import numpy as np

df_input=pd.DataFrame(np.random.randint(10,size=(1000,3)),columns=['Geolocation','start','end'])
df_input['vehicle_number']=np.random.randint(100,size=(1000))

print(df_input.shape)
print(df_input['vehicle_number'].nunique())

df_final=df_input.groupby('vehicle_number').apply(lambda x : x.head(1)).reset_index(drop=True)
print(df_final['vehicle_number'].nunique())
print(df_final.shape)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...