如何根据从另一个数据帧获得的id值从数据帧中获取a值?

时间:2018-02-07 01:18:43

标签: python pandas dataframe

我不确定如何表达我的问题,但如果你在SQL中做到这一点,那将是这样的:

SELECT MOVIES.TITLE FROM MOVIES WHERE MOVIES.MOVIE_ID = RATINGS.MOVIE_ID

我有两个数据框moviesratings。我想完全按照SQL语句中的说明进行操作。

到目前为止,我有这个:

grouped_by_movies = ratings.groupby("movie_id")
## average and combine
# your code here
average_ratings = grouped_by_movies.rating.mean()
average_ratings.columns = ['movie_id', 'average_rating']
print average_ratings.head()

print "----------------------------------"

## IN ONE LINE OF CODE FOR AVERAGE:
print ratings.groupby("movie_id").rating.mean().head()

print "----------------------------------"

# get the maximum rating
# your code here
max_rating = ratings.rating.max()
print max_rating

print "----------------------------------"

##print ratings.groupby("movie_id").rating.max().head()

# get movie ids with that rating
# your code here
print ratings.loc[ratings["rating"] == max_rating, "movie_id"].head()

print "----------------------------------"

print "Good movie ids:"
print #your code here
sorted_movie_ids = average_ratings.sort_values(ascending = False)
sorted_movie_ids = sorted_movie_ids.to_frame().reset_index()
sorted_movie_ids.columns = ['movie_id', 'average_rating']
print sorted_movie_ids.head()
print

print "----------------------------------"
print

print "Best movie titles"
print # your code here
ids = sorted_movie_ids["movie_id"].unique()
print ids
movie_titles = movies.loc[movies['movie_id'].isin(ids), ['title']]
print movie_titles.head()

1 个答案:

答案 0 :(得分:2)

使用idxmax

ratings.groupby("movie_id").rating.mean().idxmax()