Pandas数据帧合并问题

时间:2013-04-04 12:38:19

标签: python-2.7 pandas

我正在通过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

1 个答案:

答案 0 :(得分:2)

(注意我没有查找图书代码,只是你的帖子)

首先确认dtypes:

print ratings_df.dtypes
print movies_df.dtypes

如果你发现它们是不同的类型你可以尝试(让我们假设ratings_df.movi​​e_id是对象而不是int):

ratings_df.movie_id = ratings_df.movie_id.astype(int)

查看您的合并现在是否有效。