亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從列中刪除以“X”結尾的條目

從列中刪除以“X”結尾的條目

肥皂起泡泡 2023-05-16 16:44:58
我有一列電影片名。其中一些標題包括電影的發行日期(例如“玩具總動員 (1995)”),但有些則沒有。我想刪除沒有日期的條目。我試圖通過說“如果最后一個字符不是')'來做到這一點,將整個條目留空?!?我嘗試了以下代碼 - 它沒有給我錯誤,但也沒有用:for i in df['title']:   if i[-1] != ')':      i = ''例如,短路數據幀可能是:df = pd.DataFrame({'title': ['Toy Story (1995)', 'The Matrix (1999)', 'Jumanji', 'Interstellar (2014)']})
查看完整描述

3 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

如果日期格式只是電影標題末尾括號中的年份,請嘗試:


import re

df = pd.DataFrame({'movie':['Toy Story (1995)','Toy Story (no date)','Oddyssey 2000', 'Fort 6600', 'The Matrix (1999)', 'Jumanji', 'Interstellar (2014)']})

df:


                 movie

0     Toy Story (1995)

1  Toy Story (no date)

2        Oddyssey 2000

3            Fort 6600

4    The Matrix (1999)

5              Jumanji

6  Interstellar (2014)

使用正則表達式:


df[df.movie.apply(lambda x: bool(re.search('\([1-2][0-9]{3}\)$', x)))]

結果:


                 movie

0     Toy Story (1995)

4    The Matrix (1999)

6  Interstellar (2014)

非年份或不在括號中的數字將不會包含在結果中。我假設年份必須以 1 或 2 開頭。


查看完整回答
反對 回復 2023-05-16
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

這是因為變量i存儲數據的副本,而不是原始引用。


所以,你應該這樣做:


for i in range(len(df['title'])):

    if df['title'][i][-1] != ')':

        df['title'][i] = ''


查看完整回答
反對 回復 2023-05-16
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

i僅存儲數據,它不是對列表項的引用。


你可以用枚舉來做到這一點:


for index, element in enumerate(df['title']):

    if element[-1] != ')':

        df['title'][index] = ''


查看完整回答
反對 回復 2023-05-16
  • 3 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號