Pandas 在两个不同的数据帧中重新格式化非顺序项ID
我有两个数据库,一个电影用户评级数据库,如下所示:Pandas 在两个不同的数据帧中重新格式化非顺序项ID,pandas,Pandas,我有两个数据库,一个电影用户评级数据库,如下所示: userID movieID rating timestamp 0 1 9 2.5 1260759144 1 1 7 3.0 1260759179 2 1 1 3.0 1260759182 3 2 13 2.0 1260759185 4 2 1
userID movieID rating timestamp
0 1 9 2.5 1260759144
1 1 7 3.0 1260759179
2 1 1 3.0 1260759182
3 2 13 2.0 1260759185
4 2 1 4.0 1260759205
5 3 6 2.0 1260759151
6 3 11 2.0 1260759187
7 3 4 2.0 1260759148
8 3 3 3.5 1260759125
9 4 2 2.0 1260759131
movieID title
0 1 Toy Story (1995)
1 2 Jumanji (1995)
2 3 Grumpier Old Men (1995)
3 4 Waiting to Exhale (1995)
4 6 Father of the Bride Part II (1995)
5 7 Heat (1995)
6 9 Sabrina (1995)
7 10 Tom and Huck (1995)
8 11 Sudden Death (1995)
9 13 GoldenEye (1995)
以及电影ID到电影名称数据库,如下所示:
userID movieID rating timestamp
0 1 9 2.5 1260759144
1 1 7 3.0 1260759179
2 1 1 3.0 1260759182
3 2 13 2.0 1260759185
4 2 1 4.0 1260759205
5 3 6 2.0 1260759151
6 3 11 2.0 1260759187
7 3 4 2.0 1260759148
8 3 3 3.5 1260759125
9 4 2 2.0 1260759131
movieID title
0 1 Toy Story (1995)
1 2 Jumanji (1995)
2 3 Grumpier Old Men (1995)
3 4 Waiting to Exhale (1995)
4 6 Father of the Bride Part II (1995)
5 7 Heat (1995)
6 9 Sabrina (1995)
7 10 Tom and Huck (1995)
8 11 Sudden Death (1995)
9 13 GoldenEye (1995)
问题是第二个数据库中的电影ID不是按顺序排列的(缺少数字5、8和12)。我需要它们,以便在以后的程序中查找。是否有办法按顺序重新格式化ID,并更改分级数据库中相应的电影ID,以便我以后可以查找电影?首先,创建顺序ID字段:
movie_DB['new_movie_id'] = range(len(movie_DB))
然后,创建从旧ID到新ID的dict:
id_dict = dict(zip(movie_DB['movieID'], move_DB['new_movie_ID']))
在用户分级数据库中映射电影ID:
user_DB['new_movie_id'] = user_DB['movieID'].map(id_dict)
在您的示例中,没有重叠。如果没有名字,人们将如何确定要更改哪些ID。此外,对于查找,您不必将它们按顺序排列。
我需要它们按顺序排列,以便稍后在程序中进行查找。
是“程序”仍在Pandas中,还是某些外部依赖项?如果像@harvpan提到的那样,Pandas不是一个要求。我已经重新格式化了示例,使其具有重叠。由于我构建程序的方式,它们确实需要按顺序排列,没有遗漏的值。i、 e[1,2,3,4],而不是[1,3,4,5]@harvpan