简体   繁体   中英

Python Pandas Warning: A value is trying to be set on a copy of a slice from a DataFrame

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM