如何解决从列中删除以'X'结尾的条目
我有一列电影标题。其中一些标题包括电影的发行日期(例如“玩具总动员(1995)”),但有些则没有。我要删除没有日期的条目。我试图通过说“如果最后一个字符不是')',将整个条目留空。我尝试了以下代码-它没有给我一个错误,但也没有起作用:
for i in df['title']:
if i[-1] != ')':
i = ''
例如,短路的数据帧可能是:
df = pd.DataFrame({'title': ['Toy Story (1995)','The Matrix (1999)','Jumanji','Interstellar (2014)']})
解决方法
这是因为变量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] = ''
,
如果日期格式只是电影标题结尾方括号中的年份,请尝试:
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开头。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。