I’ve been working through this mission in my own Jupyter notebook and I keep getting a
SettingwithCopyWarning whenever I run the
predict_price function (either on the
accommodates column or
bathrooms column). I am trying to figure out why and I’ve tried alternative ways to do the chain indexing, but I keep getting the error:
temp_df = train_df.copy()
temp_df['distance'] = temp_df['accommodates'].apply(lambda x: abs(x-new_listing))
temp_df = temp_df.sort_values(by='distance')
nearest_neighbor_prices = temp_df.iloc[0:5]['price']
predicted_price = nearest_neighbor_prices.mean()
test_df['predicted_price'] = test_df['accommodates'].apply(predict_price)
Thanks for your help!
You can use this blog https://www.dataquest.io/blog/settingwithcopywarning/ post to help you resolve the setting with copy warning.
I read the blog post, but I’m still not sure why the warning is being triggered. We created a copy of the
train_df to prevent modifying the original dataframe. I’m looking for chained indexing and the only place I can see that being an issue is
nearest_neighbor_prices = temp_df.iloc[0:5]['price']. I tried changing this to
temp_df.loc[0:5, 'price'] or
temp_df.loc[[0:5], 'price'] but I still get the error. First of all, am I rewriting with
.loc correctly and second, is there some hidden chaining that I’m missing? Or is there some method that is returning a copy or view and that is creating the warning?
I have to test it out to figure what’s wrong. Can you list the Mission URL and/or share the notebook?