2

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

4

1 回答 1

2

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

首先确认dtypes:

print ratings_df.dtypes
print movies_df.dtypes

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

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

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

于 2013-04-29T05:34:59.910 回答