Python 如果另一列包含字符串,则替换该列

Python 如果另一列包含字符串,则替换该列,python,python-3.x,pandas,dataframe,machine-learning,Python,Python 3.x,Pandas,Dataframe,Machine Learning,我有两列newlabels和newlabels\u要替换。如果新标签在其句子中包含“三分叉”一词,则要替换的新标签应替换为“三分叉” 我有以下代码 df_new.loc[df_new.newlabels.str.contains('trifurcation'),'newlabels_tobeReplaced'] = 'trifurcation' 但是,我得到了这个错误: A value is trying to be set on a copy of a slice from a DataFr

我有两列newlabels和newlabels\u要替换。如果新标签在其句子中包含“三分叉”一词,则要替换的新标签应替换为“三分叉” 我有以下代码

df_new.loc[df_new.newlabels.str.contains('trifurcation'),'newlabels_tobeReplaced'] = 'trifurcation'
但是,我得到了这个错误:

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: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self.obj[item] = s
任何想法,如何得到正确的结果。
问题是,新标签的值如下:“波形显示左下肢在踝关节水平休息时出现轻度远端缺血的三功能性疾病。”

您可以通过重新分配到
df\u new
并使用
assign

df_new = df_new.assign(
    newlabels_tobeReplaced=
    lambda d: d['newlabels_tobeReplaced'].mask(
        d.newlabels.str.contains('trifurcation'), 'trifurcation'
    )
)

你确定这个警告(不是错误)来自你给我们的那一行吗?这是同样的逻辑,只是很方便地跳过修改调用对象的尝试,然后在调用对象的顶部重新分配。我更倾向于指出错误是停止代码执行的东西,而不是弹出的消息。很可能我自己的理解是错误的,但警告似乎表明OP做了他们已经在做的事情。这是臭名昭著的SetWithCopyWarning。它抱怨现有数据帧
df_new
已被标记为另一个数据帧的副本或视图。这是由于
dfu new
是如何构建的。这是令人困惑的,因为责任代码在OPs通常发布的代码之前。建议的解决方案具有误导性,因为它是关于如何构造原始数据帧的建议,而不是关于如何切片或更改当前数据帧的建议。最好是复制一份,然后继续。除非,你真的打算保留那个链接,这很少见。啊哈,好吧,我误解了你发布的解决方案是他们发布的代码的上游,对不起。我很熟悉警告信息,但您也将is称为“错误”,我认为我对警告和错误的区分偏离了轨道。当你再次提到“错误”时,我认为这个警告实际上导致了这里的代码崩溃。这是一个很好的语言调用。我已经修好了。