我正在通过Wes McKinney的 Python for Data Analysis 学习python和pandas。第2章中的一个示例是movie_id上的MovieLens数据合并无法正常工作。我认为问题在于,在评级中,movie_id是一个int64,在电影中它是一个对象。合并返回一个空数据框。
我已经阅读过一些关于pandas和自动数据类型赋值的帖子,并在pandas.io.parsers.read_table文档中找到了dtype但是无法更改类型。
原始代码:
mnames = ['movie_id', 'title', 'genres']
movies = pd.read_table('ch02/movielens/movies.dat', sep='::', header=None, names=mnames)
我的研究表明应该做些什么:
movies = pd.read_table('ch02/movielens/movies.dat', sep='::', header=None, names=mnames, dtype={'movie_id':np.int64})
不幸的是,类型没有改变,合并仍然返回一个空集。我正在跑熊猫0.10.1
答案 0 :(得分:2)
(注意我没有查找图书代码,只是你的帖子)
首先确认dtypes:
print ratings_df.dtypes
print movies_df.dtypes
如果你发现它们是不同的类型你可以尝试(让我们假设ratings_df.movie_id是对象而不是int):
ratings_df.movie_id = ratings_df.movie_id.astype(int)
查看您的合并现在是否有效。