3 回答
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 开头。
TA贡献1797条经验 获得超4个赞
这是因为变量i存储数据的副本,而不是原始引用。
所以,你应该这样做:
for i in range(len(df['title'])):
if df['title'][i][-1] != ')':
df['title'][i] = ''
TA贡献1804条经验 获得超3个赞
i仅存储数据,它不是对列表项的引用。
你可以用枚举来做到这一点:
for index, element in enumerate(df['title']):
if element[-1] != ')':
df['title'][index] = ''
添加回答
举报