【问题标题】:merging error in pandas熊猫中的合并错误
【发布时间】:2017-09-14 06:54:01
【问题描述】:

我有一个如下所示的数据框:

top_ten_movies:

movieId  count   mean   
1        247     3.872470
2        107     3.401869
6        104     3.884615
10       122     3.450820
25       101     3.742574
32       196     3.923469
34       148     3.601351
36       104     3.937500
39       120     3.550000
47       201     4.034826

电影:

movieId  title                                  genres
1        Toy Story (1995)                       Adventure
2        Jumanji (1995)                         Children|Fantasy
3        Grumpier Old Men (1995)                Comedy|Romance
4        Waiting to Exhale (1995)               Comedy|Drama|Romance
5        Father of the Bride Part II (1995)     Comedy
6        Heat (1995)                            Action|Crime|Thriller
7        Sabrina (1995)                         Comedy|Romance
8        Tom and Huck (1995)                    Adventure|Children
9        Sudden Death (1995)                    Action

我需要根据movieId进行合并,所以:

required_data=pd.merge(top_ten_movies, movies)
required_data=pd.merge(top_ten_movies, movies, on='movieId', how='outer')

这两个语句都引发了错误。有人可以帮忙吗...?

【问题讨论】:

  • 知道错误会很有用,你不觉得吗?您确定两个 dfs 的 movieId dtypes 相同吗? IE。一个是数字,另一个是字符串?

标签: python-3.x pandas numpy jupyter-notebook


【解决方案1】:

我将假设这些是您分别尝试的方法的错误:

MergeError: 没有要执行合并的通用列

KeyError: 'movieId'

根据您发布的 DataFrame,我假设您的索引是 movieId,这就是导致您的错误的原因。如果您重置索引并重试,您应该能够合并。因此,基于这些假设,以下应该可行:

out = pd.merge(top_ten_movies.reset_index(), movies.reset_index())
print(out)
   movieId  count      mean                 genres      title
0        1    247  3.872470              Adventure  Toy Story
1        2    107  3.401869       Children|Fantasy    Jumanji
2        6    104  3.884615  Action|Crime|Thriller       Heat

现在,如果您的索引是假设的movieId,您可以使用pandas.DataFrame.join 方法来完成您的任务。例如:

print(top_ten_movies.join(movies))
         count      mean                 genres      title
movieId
1          247  3.872470              Adventure  Toy Story
2          107  3.401869       Children|Fantasy    Jumanji
6          104  3.884615  Action|Crime|Thriller       Heat
10         122  3.450820                    NaN        NaN
25         101  3.742574                    NaN        NaN
32         196  3.923469                    NaN        NaN
34         148  3.601351                    NaN        NaN
36         104  3.937500                    NaN        NaN
39         120  3.550000                    NaN        NaN
47         201  4.034826                    NaN        NaN
print(top_ten_movies.join(movies, how='inner'))
         count      mean                 genres      title
movieId
1          247  3.872470              Adventure  Toy Story
2          107  3.401869       Children|Fantasy    Jumanji
6          104  3.884615  Action|Crime|Thriller       Heat

说了这么多,你可以为自己做的最好的事情就是阅读熊猫文档中的Merge, Join, and Concatenate

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 2018-09-26
    • 1970-01-01
    • 2015-05-28
    • 2023-03-29
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多