Skip to content Skip to sidebar Skip to footer

New Column Using Apply Function On Other Columns In Dataframe

I have a dataframe where three of the columns are coordinates of data ('H_x', 'H_y' and 'H_z'). I want to calculate radius-vector of the data and add it as a new column in my dataf

Solution 1:

The problem is you're working with a slice, which can be ambiguous:

halo_field = halo_res[halo_res.N_subs==1]

You have two options:

Work on a copy

You can explicitly copy your dataframe to avoid the warning and ensure your original dataframe is unaffected:

halo_field = halo_res[halo_res.N_subs==1].copy()
halo_field['rh_field'] = halo_field.apply(...)

Work on the original dataframe conditionally

Use pd.DataFrame.loc with a Boolean mask to update your original dataframe:

mask = halo_res['N_subs'] == 1
halo_res.loc[mask, 'rh_field'] = halo_res.loc[mask, 'rh_field'].apply(...)

Don't use apply

As a side note, in either scenario you can avoid apply for your function. For example:

halo_field['rh_field'] = (halo_field[['H_x', 'H_y', 'H_z']]**2).sum(1)**0.5

Post a Comment for "New Column Using Apply Function On Other Columns In Dataframe"