[英]Change a value of a column when it another column value is equal to one of the values from a list
我有一個包含幾列的數據集。 但是對於這個問題,只有其中兩個是重要的。 Body 列和 Valid 列,第一個是 Twitter 中的評論,第二個是 ML 算法的輸出,用於確定它對我正在處理的項目是否有效。
問題是我有一個來自 Body 列的推文列表,這些推文被錯誤地預測了。 如果 body 列與 wrong_one(這是一個列表)中的任何值重合,我想要做的是更改 Valid 列上的該值。
因此,考慮到 wrong_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
OUT: TypeError: 'Series' 對象是可變的,因此它們不能被散列
有幾個錯誤:
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
另請參閱官方文檔中的索引和選擇數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.