Vectorizing operation involving multiple DataFrames

Viswanath Potluri vpotlur1 at asu.edu
Wed Jul 4 22:51:06 EDT 2018


I've a dataframe all_paths with say 9000 rows, and i've another dataframe Legs with 4000 rows. I need to filter all_paths dataframe based on a column called 'itineraries' which contains a list of strings, for each row in Legs. So, basically its like getting a dataframe that is subset of all_paths for each row in Legs. Then I need to perform a math operation on the columns of each subset and assign the values back to another column in all_paths. Following is my implementation

def step1_vec(iti_list, idx):
  mask= all_paths.loc[all_paths['Path'].isin(iti_list)]
  Legs.loc[idx,'r']=np.dot(mask['demand'].values, mask['u'].values.T)
  Legs.loc[idx, 't']= Legs.loc[idx, 'k']/Legs.loc[idx, 'r']

def step2():
  not_full_legs=Legs.loc[(~Legs['Leg ID'].isin(full_legs))&(Legs['t']<1)]
  np.vectorize(step1_vec (not_full_legs['itineraries'].values,not_full_legs.index.values)


More information about the Python-list mailing list