Python / Pandas,将数据从一个帧分配给另一个帧中的对应数据

时间:2017-04-15 22:05:27

标签: python pandas

我在一个帧(DF1)中有数据,其中包含簇的标签,以及latitudelongitude中的相应质心,我有第二个数据帧(DF2),其中包含一些用于地理位置社交的数据媒体帖子以及他们与DBSCAN分配的群集的标签。我需要将DF1中的聚类质心分配/映射到DF2中具有相应聚类标签的帖子。使用pandas,如何指定DF1的纬度和经度(质心)以匹配DF2中的标签?我已尝试使用.join().merge()加入此方式,但我收到了各种类型和密钥错误。

示例数据:

DF1

cluster_label   latitude    longitude   frequency
0               39.18193382 -77.51885109   6
1               39.18       -77.27         46
2               39.17917928 -76.6688633    35
3               39.1782     -77.2617       48
4               39.1765     -77.1927       6
5               39.1762375  -76.8675441    16
6               39.17468    -76.8204499    7
7               39.17457332 -77.2807235    9

DF2

user_id     timestamp       latitude    longitude   cluster_label
3073171535  3/10/2017 11:10 39.18193382 -77.51885109    0
1628115950  3/11/2017 9:04  39.18193382 -77.51885109    0
7.46E+17    3/9/2017 21:52  39.18       -77.27          1
4188084947  3/10/2017 1:53  39.18       -77.27          1
3123690477  3/10/2017 10:44 39.17917928 -76.6688633     2
3063785591  3/10/2017 11:15 39.17917928 -76.6688633     2
2878413353  3/10/2017 14:33 39.1782     -77.2617        3
19410434    3/14/2017 15:32 39.1782     -77.2617        3
7.51E+17    3/9/2017 21:44  39.1765     -77.1927        4
27081288    3/14/2017 12:28 39.1765     -77.1927        4
400535528   3/12/2017 13:30 39.1762375  -76.8675441     5
8.06E+17    3/9/2017 19:45  39.1762375  -76.8675441     5
199324673   3/13/2017 11:12 39.17468    -76.8204499     6
198014146   3/13/2017 11:22 39.17468    -76.8204499     6
195546843   3/13/2017 11:26 39.17468    -76.8204499     6
2344467747  3/10/2017 21:45 39.1746     -77.2807        7
703776919   3/11/2017 20:14 39.1746     -77.2807        7

示例输出

user_id     timestamp cluster_label  cluster_centroid_lat cluster_centroid_long
3073171535  3/10/2017 11:10     0       39.18193382     -77.51885109
7.46E+17    3/9/2017 21:52      1       39.18            -77.27

1 个答案:

答案 0 :(得分:1)

merged=df2.merge(df1,on='cluster_label')

并删除您喜欢的任何列...