从列中删除以“X”结尾的条目

我有一列电影片名。其中一些标题包括电影的发行日期(例如“玩具总动员 (1995)”),但有些则没有。我想删除没有日期的条目。我试图通过说“如果最后一个字符不是')'来做到这一点,将整个条目留空。” 我尝试了以下代码 - 它没有给我错误,但也没有用:


for i in df['title']:

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

      i = ''

例如,短路数据帧可能是:


df = pd.DataFrame({'title': ['Toy Story (1995)', 'The Matrix (1999)', 'Jumanji', 'Interstellar (2014)']})


肥皂起泡泡
浏览 87回答 3
3回答

SMILET

如果日期格式只是电影标题末尾括号中的年份,请尝试:import redf = pd.DataFrame({'movie':['Toy Story (1995)','Toy Story (no date)','Oddyssey 2000', 'Fort 6600', 'The Matrix (1999)', 'Jumanji', 'Interstellar (2014)']})df:                 movie0     Toy Story (1995)1  Toy Story (no date)2        Oddyssey 20003            Fort 66004    The Matrix (1999)5              Jumanji6  Interstellar (2014)使用正则表达式:df[df.movie.apply(lambda x: bool(re.search('\([1-2][0-9]{3}\)$', x)))]结果:                 movie0     Toy Story (1995)4    The Matrix (1999)6  Interstellar (2014)非年份或不在括号中的数字将不会包含在结果中。我假设年份必须以 1 或 2 开头。

繁星coding

这是因为变量i存储数据的副本,而不是原始引用。所以,你应该这样做:for i in range(len(df['title'])):    if df['title'][i][-1] != ')':        df['title'][i] = ''

狐的传说

i仅存储数据,它不是对列表项的引用。你可以用枚举来做到这一点:for index, element in enumerate(df['title']):    if element[-1] != ')':        df['title'][index] = ''
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python