我有数据帧:
import pandas as pd
df = pd.read_csv('data.csv')
df.head()
title poster
0 Toy Story https://images-na.ssl-images-amazon.com/images...
1 Jumanji https://images-na.ssl-images-amazon.com/images...我想创建一个函数,它将接受电影片名作为输入,并返回海报链接作为输出。我尝试了以下方法,但不起作用:
def function_to_return_link(movie_name):
if df['title'].str.contains(movie_name).any():
print('Movie present in df')
out = df.loc[df['title'] == movie_name]
print(out)
else:
print('Movie is not present')它将输出显示为:
function_to_return_link('Toy Story')
Movie present in df
Empty DataFrame
Columns: [title, poster]
Index: [] 发布于 2020-01-14 01:48:53
df.loc[..., 'poster']返回包含所选电影的pd.Series。然后,使用pd.Series.iat获取所选内容中的第一个值(通过索引)。如果电影不存在,那么它将引发一个IndexError。
def function_to_return_link(movie_name):
posters = df.loc[df['title'].str.contains(movie_name), 'poster']
try:
link = posters.iat[0]
except IndexError:
print('Movie is not present')
else:
return link请注意,这不包括重复条目(多个条目)。要解决这个问题,您可以执行下面的操作(尽管它可能比try/except更容易使用pythonic )。
def function_to_return_link(movie_name):
posters = df.loc[df['title'].str.contains(movie_name), 'poster']
if len(posters) > 1:
print('Multiple hits')
elif len(posters) == 0:
print('Movie is not present')
else:
return posters.iat[0]发布于 2020-01-14 01:25:30
这是一种你可以做到的方法:
def function_to_return_link(movie_name):
if movie_name in pos['title']:
return pos.query("title == @movie_name")['poster']
else:
print('Movie is not present')https://stackoverflow.com/questions/59721106
复制相似问题