我有一个包含几列的数据集。但是对于这个问题,只有两个很重要。 “正文”列和“有效”列,第一列是Twitter中的注释,第二列是ML算法的输出,该算法确定它对我正在处理的项目是否有效。
问题是我从“正文”列中获得了一条被错误预测的推文列表。我想做的是,如果正文列与rong_one(这是一个列表)中的任何值一致,则在“有效”列上更改该值。
因此,考虑到rong_one是一个列表,而raw_data是我的数据帧。
我已经尝试过了:
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
输出:TypeError:“系列”对象是可变的,因此不能被散列
答案 0 :(得分:1)
有两个错误:
wrong_one
是一个字符串的列表,您想要多个字符串的列表。pd.DataFrame.loc
,而不是 pd.DataFrame.__getitem__
(对于raw_data[]
是语法糖)。因此您可以使用:
wrong_one = ['LOL1', 'LOL']
raw_data.loc[raw_data['BODY'].isin(wrong_one), 'VALID'] = False
另请参阅官方文档中的Indexing and Selecting Data。