Python 2.7 数据帧合并问题

Python 2.7 数据帧合并问题,python-2.7,pandas,Python 2.7,Pandas,我正在通过Wes McKinney的数据分析python学习python和pandas。第2章中的一个例子是合并不起作用的MovieLens数据。我认为问题在于,在收视率中,电影的id是一个int64,而在电影中它是一个对象。合并返回一个空数据帧 我已经阅读了以前关于pandas和自动数据类型分配的一些帖子,并在pandas.io.parsers.read_表文档中找到了数据类型,但无法更改类型 原代码: mnames = ['movie_id', 'title', 'genres'] movi

我正在通过Wes McKinney的数据分析python学习python和pandas。第2章中的一个例子是合并不起作用的MovieLens数据。我认为问题在于,在收视率中,电影的id是一个int64,而在电影中它是一个对象。合并返回一个空数据帧

我已经阅读了以前关于pandas和自动数据类型分配的一些帖子,并在pandas.io.parsers.read_表文档中找到了数据类型,但无法更改类型

原代码:

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})
不幸的是,类型没有改变,合并仍然返回一个空集。我正在运行pandas 0.10.1(请注意,我没有查找图书代码,只查找您的帖子)

首先确认数据类型:

print ratings_df.dtypes
print movies_df.dtypes
如果您发现它们是不同的类型,您可以尝试(假设ratings_df.movie_id是object而不是int):


看看你的合并现在是否有效。

FWIW这本书的代码对我是否有效。要排除自修复错误,请确认您正在运行pandas 0.10.1?在[83]:import pandas打印“pandas version:”,pandas.\uuuu version\uuuuuu pandas version:0.10.1Strange,然后。movies数据框中我的
movie\u id
系列是
Name:movie\u id,长度:3883,数据类型:int64
,这似乎是正确的,并且合并的行为与您期望的方式相同。我还可以确认书中的代码完全按照编写的方式为我工作。
ratings_df.movie_id = ratings_df.movie_id.astype(int)