Pandas - 为什么join后出现重复?

Pandas - Why there are duplicates after join?

我训练了 3756 行,测试了 500 行,加入后我有 798974 行。

加入代码:

test.join(train.set_index('link_1')['claps_link_1_mean'], on='link_1', how='left')

使用删除副本是可行的,但需要大量时间和内存。

原因是 testtrain 中列 link_1 的重复值,因此对于每个重复值,获取以下所有组合:

train = pd.DataFrame({"link_1": [0, 0, 0, 0, 1, 1, 1, 1],
                      'claps_link_1_mean': range(8)})
test = pd.DataFrame({"link_1": [0, 1, 1, 1]})

df = test.join(train.set_index('link_1')['claps_link_1_mean'], on='link_1', how='left')
print (df)
   link_1  claps_link_1_mean
0       0                  0
0       0                  1
0       0                  2
0       0                  3
1       1                  4
1       1                  5
1       1                  6
1       1                  7
2       1                  4
2       1                  5
2       1                  6
2       1                  7
3       1                  4
3       1                  5
3       1                  6
3       1                  7

如果在 join 之前删除其中一个中的重复项,一切正常:

test.join(train.drop_duplicates('link_1').set_index('link_1')['claps_link_1_mean'], on='link_1', how='left')