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')
使用删除副本是可行的,但需要大量时间和内存。
原因是 test
和 train
中列 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')
我训练了 3756 行,测试了 500 行,加入后我有 798974 行。
加入代码:
test.join(train.set_index('link_1')['claps_link_1_mean'], on='link_1', how='left')
使用删除副本是可行的,但需要大量时间和内存。
原因是 test
和 train
中列 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')