首页 > 解决方案 > pandas.loc 计算中的错误 - 切片数据帧的副本

问题描述

我有两个熊猫数据框,一个名为 df1,另一个名为 df2:

import pandas as pd

df1 = pd.DataFrame({'PERCENTAGE': [0.35,0.1105,0.0487,0.98],})

df2 = df1.loc[df1['PERCENTAGE'] > 0.4]

我正在尝试使用以下代码在 df2 中创建一个新列:

df2['NEW_COLUMN'] = 1 - df2['PERCENTAGE']

但我收到以下错误:

C:\PATH: 
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
  """Entry point for launching an IPython kernel.

有没有办法解决这个问题而不必直接在 df1 中构建此列?

标签: pythonpandasdataframepandas-loc

解决方案


我们试试看df.loc[Query,Column]

m=df1.PERCENTAGE>0.4
df1.loc[m,'NewColumn']=1-df1.loc[m,'PERCENTAGE']
df2=df1.dropna()




     PERCENTAGE  NewColumn
3        0.98       0.02

推荐阅读