Python 尝试改用.loc[row\u indexer,col\u indexer]=value

Python 尝试改用.loc[row\u indexer,col\u indexer]=value,python,pandas,row,indexer,loc,Python,Pandas,Row,Indexer,Loc,使用python时,出现了一些问题 resource1 #"dataframe" 以及 然后,错误消息在这里 ~/anaconda3/lib/python3.6/site packages/pandas/core/index.py:537: SettingWithCopyWarning:正在尝试在副本上设置值 从数据帧切片。尝试使用.loc[行索引器、列索引器]= 值,请参见文档中的注意事项: self.obj[item]=s 代码有什么问题?如果您从其他源创建resource1,例如:

使用python时,出现了一些问题

 resource1   #"dataframe"
以及

然后,错误消息在这里

~/anaconda3/lib/python3.6/site packages/pandas/core/index.py:537: SettingWithCopyWarning:正在尝试在副本上设置值 从数据帧切片。尝试使用.loc[行索引器、列索引器]= 值,请参见文档中的注意事项: self.obj[item]=s


代码有什么问题?

如果您从其他源创建resource1,例如:

# original DattaFrame
resource = pd.DataFrame({'code':['aaa', "", 'bb', 'nbn']})
# new DataFrame 
resource1 = resource[resource['code'].str.len()<3]
将在没有警告的情况下工作

或您可能禁用链式赋值以达到相同的值(但警告不只是ANOION,所以考虑谨慎选择……)/P>


您需要发布数据、代码以重现df,以及重现错误的代码,查看您的少量代码,为什么需要在布尔掩码周围使用
()
?这是否有效:
resource1.loc[resource1[“code”]=“nocode”
正如@EdChum所写,您需要展示如何生成数据。查看错误消息表明您可能使用了一个切片创建了resource1,例如:
resource1=resource1.loc[resource1[“code”]=“special_code”]
# original DattaFrame
resource = pd.DataFrame({'code':['aaa', "", 'bb', 'nbn']})
# new DataFrame 
resource1 = resource[resource['code'].str.len()<3]
import copy
resource1 = copy.deepcopy(resource[resource['code'].str.len()<3])
resource1.loc[(resource1["code"] == ""), "code"] = "nocode"
pandas.options.mode.chained_assignment = None