簡體   English   中英

當另一列值等於列表中的值之一時更改列的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM