I have a Pandas DataFrame and I would like to change all the values of a column with this code:
df["Population"] = round(df["Population"]/1000000,1)
And I receive the following warning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
return super().rename(
<ipython-input-6-59bf041bb022>:2: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
df["Population"] = round(df["Population"]/1000000,1)
What would be the correct way to do it and avoid such warning?
Thank you for your help!
Before you have your df , it is subset of some other dataframe
df = alldf[cond].copy()
Or we try assign
df = df.assign(Population = round(df["Population"]/1000000,1))
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.