Python 当另一列值等于列表中的一个值时,更改列的值

Python 当另一列值等于列表中的一个值时,更改列的值,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个包含多个列的数据集。但对于这个问题,只有两个是重要的。列主体和列有效,第一个是twitter中的注释,第二个是ML算法的输出,该算法确定它是否对我正在处理的项目有效 问题是我有一个来自Body专栏的推文列表,这些推文被错误地预测了。我想做的是,如果body列与error_one(这是一个列表)中的任何值重合,则更改Valid列上的值 所以考虑到错误的是一个列表,而原始数据是我的数据帧 我试过这个: raw_data = pd.DataFrame( { "SYS-ID":[1,2,3

我有一个包含多个列的数据集。但对于这个问题,只有两个是重要的。列主体和列有效,第一个是twitter中的注释,第二个是ML算法的输出,该算法确定它是否对我正在处理的项目有效

问题是我有一个来自Body专栏的推文列表,这些推文被错误地预测了。我想做的是,如果body列与error_one(这是一个列表)中的任何值重合,则更改Valid列上的值

所以考虑到错误的是一个列表,而原始数据是我的数据帧

我试过这个:

raw_data = pd.DataFrame(
{
   "SYS-ID":[1,2,3,4,5,6,7,8],
    "BODY":["LOL1","LOL","lol","a","b","C","hey","ho"],
    "VALID":[True,True,True,True,True,True,True,True]
})
wrong_one = ["LOL1,LOL"]

raw_data[raw_data['BODY'].isin(wrong_one), 'Valid'] = False

OUT:TypeError:“Series”对象是可变的,因此无法对其进行哈希处理。有几个错误:

  • 错误\u one
    是一个字符串列表,您需要一个多字符串列表
  • ,而不是
    pd.DataFrame.\uuu getitem\uuuu
    (其中
    raw\u data[]
    是语法糖)是按行和列索引器进行设置所必需的
因此,您可以使用:

wrong_one = ['LOL1', 'LOL']

raw_data.loc[raw_data['BODY'].isin(wrong_one), 'VALID'] = False

另请参见官方文档。

谢谢您的帮助!