我正在嘗試根據正則表達式將數(shù)據框中的一列設置為另一列的子字符串。一欄有標題,有時還有年份,例如“Temp (2019)”或“Temp”。我需要從該標題中提取年份(如果有的話),然后從原始單詞中刪除年份。因此,不是將一列作為“Temp (2019)”,而是有兩列,一列是“Temp”,另一列是“2019”。如果標題沒有單詞,則輸入 0。regex = r"\(\d{4}\)$"tempYear = df['title'].str[-5:-1]df['year'] = np.where(re.search(regex, df['title']) != None, df['title'].str[-5:-1], "0")現(xiàn)在,當我運行它時,我收到此錯誤:Exception has occurred: TypeErrorexpected string or bytes-like object File "[path]", line 63, in <module> df['year'] = np.where(re.search(regex, df['title']) != None, df['title'].str[-5:-1], "0")我認為這是因為我使用了第一個條件(如果條件為真),因為它是一個列表(我認為)而不是單個單詞。換句話說,if 語句具有多種類型。我不知道如何在沒有它的情況下從標題中提取年份。標題,如果有年份,將始終采用“[word] ([year])”格式,年份在末尾,在括號中。我可以輕松做到df['year'] = df['title'].str[-5:-1]但是當沒有一年時,這會導致問題。
1 回答

千萬里不及你
TA貢獻1784條經驗 獲得超9個贊
在 Pandas 中,str
提供正則表達式處理,而標準庫re
模塊不能處理 Pandas 系列而不是 numpy 數(shù)組。
所以你想要的東西可以更容易地通過熊貓函數(shù)獲得:
df['year'] = np.where(df.title.str.contains(regex), df['title'].str[-5:-1], "0")
添加回答
舉報
0/150
提交
取消