我有两个数据框
df1:
$ g++ -std=c++0x Foo.cpp -o Foo && Foo
All Uniform: Yes
All Uniform: No
和df2:
id text top_class class_name confidence
66957231351_2019-10-07 demora muito pra abrir 14008 14008 0.4602143298907555
66957231351_2019-10-07 demora muito pra abrir 14008 06003 0.30678383572691853
66957231351_2019-10-07 demora muito pra abrir 14008 05002 0.037590707858130325
66957231351_2019-10-07 demora muito pra abrir 14008 23001 0.02091041755666281
66957231351_2019-10-07 demora muito pra abrir 14008 01002 0.01907102736912508
66957231351_2019-10-07 demora muito pra abrir 14008 23003 0.012796897109324473
66957231351_2019-10-07 demora muito pra abrir 14008 22001 0.01228200915189815
66957231351_2019-10-07 demora muito pra abrir 14008 15002 0.011176991076612896
66954122785_2019-10-02 retirar anuidade 13002 13002 0.6453412791820116
66954122785_2019-10-02 retirar anuidade 13002 13006 0.1100155553542794
66954122785_2019-10-02 retirar anuidade 13002 12001 0.08613744623369846
66954122785_2019-10-02 retirar anuidade 13002 13004 0.024676785852323118
66954122785_2019-10-02 retirar anuidade 13002 06004 0.016872895547706917
66954122785_2019-10-02 retirar anuidade 13002 11003 0.011536940259058345
66954122785_2019-10-02 retirar anuidade 13002 23001 0.011438333185246417
我需要一个df3,每当df2上的列文本等于df1时,列“ top_class”,“ class_name”和“ confidence”将被附加到相应的行,因为您会看到它们具有不同的“ id”值,唯一的共同点是文字
所需的输出:
df 3
id text
0 10005203764_2019-10-14 demora muito pra abrir
1 66978324904_2019-10-11 retirar anuidade
我尝试了id text top_class class_name confidence
66957231351_2019-10-07 demora muito pra abrir 14008 14008 0.4602143298907555
66957231351_2019-10-07 demora muito pra abrir 14008 06003 0.30678383572691853
66957231351_2019-10-07 demora muito pra abrir 14008 05002 0.037590707858130325
66957231351_2019-10-07 demora muito pra abrir 14008 23001 0.02091041755666281
66957231351_2019-10-07 demora muito pra abrir 14008 01002 0.01907102736912508
66957231351_2019-10-07 demora muito pra abrir 14008 23003 0.012796897109324473
66957231351_2019-10-07 demora muito pra abrir 14008 22001 0.01228200915189815
66957231351_2019-10-07 demora muito pra abrir 14008 15002 0.011176991076612896
66954122785_2019-10-02 retirar anuidade 13002 13002 0.6453412791820116
66954122785_2019-10-02 retirar anuidade 13002 13006 0.1100155553542794
66954122785_2019-10-02 retirar anuidade 13002 12001 0.08613744623369846
66954122785_2019-10-02 retirar anuidade 13002 13004 0.024676785852323118
66954122785_2019-10-02 retirar anuidade 13002 06004 0.016872895547706917
66954122785_2019-10-02 retirar anuidade 13002 11003 0.011536940259058345
66954122785_2019-10-02 retirar anuidade 13002 23001 0.011438333185246417
##values of df2 with their respectives "top_class" "class_name" and "confidence" took from df1
10005203764_2019-10-14 demora muito pra abrir 14008 14008 0.4602143298907555
10005203764_2019-10-14 demora muito pra abrir 14008 06003 0.30678383572691853
10005203764_2019-10-14 demora muito pra abrir 14008 05002 0.037590707858130325
10005203764_2019-10-14 demora muito pra abrir 14008 23001 0.02091041755666281
10005203764_2019-10-14 demora muito pra abrir 14008 01002 0.01907102736912508
10005203764_2019-10-14 demora muito pra abrir 14008 23003 0.012796897109324473
10005203764_2019-10-14 demora muito pra abrir 14008 22001 0.01228200915189815
10005203764_2019-10-14 demora muito pra abrir 14008 15002 0.011176991076612896
66978324904_2019-10-11 retirar anuidade 13002 13002 0.6453412791820116
66978324904_2019-10-11 retirar anuidade 13002 13006 0.1100155553542794
66978324904_2019-10-11 retirar anuidade 13002 12001 0.08613744623369846
66978324904_2019-10-11 retirar anuidade 13002 13004 0.024676785852323118
66978324904_2019-10-11 retirar anuidade 13002 06004 0.016872895547706917
66978324904_2019-10-11 retirar anuidade 13002 11003 0.011536940259058345
66978324904_2019-10-11 retirar anuidade 13002 23001 0.011438333185246417
但是df2的值会附加到置信权的后面,而不会包含“ top_class”,“ class_name”和“ confidence”
d3 = pd.merge(d1, d2, on='text', how='outer')
在此先感谢,感谢您的帮助。
答案 0 :(得分:1)
首先发生这种情况是因为当您合并具有整数的列时,合并会丢失数据。 然后:
d2["top_class"] = d2["top_class"].apply(lambda x: str(x))
之所以会发生这种情况,是因为这些列都是整数,请将其转换为字符串,然后再转换为整数或浮点数。
答案 1 :(得分:1)
IIUC,您可以这样做:
pd.concat((df1,
df2.merge(df1.drop('id',axis=1),
on='text', how='left')
))
输出:
id text top_class class_name confidence
-- ---------------------- ---------------------- ----------- ------------ ------------
0 66957231351_2019-10-07 demora muito pra abrir 14008 14008 0.460214
1 66957231351_2019-10-07 demora muito pra abrir 14008 6003 0.306784
2 66957231351_2019-10-07 demora muito pra abrir 14008 5002 0.0375907
3 66957231351_2019-10-07 demora muito pra abrir 14008 23001 0.0209104
4 66957231351_2019-10-07 demora muito pra abrir 14008 1002 0.019071
5 66957231351_2019-10-07 demora muito pra abrir 14008 23003 0.0127969
6 66957231351_2019-10-07 demora muito pra abrir 14008 22001 0.012282
7 66957231351_2019-10-07 demora muito pra abrir 14008 15002 0.011177
8 66954122785_2019-10-02 retirar anuidade 13002 13002 0.645341
9 66954122785_2019-10-02 retirar anuidade 13002 13006 0.110016
10 66954122785_2019-10-02 retirar anuidade 13002 12001 0.0861374
11 66954122785_2019-10-02 retirar anuidade 13002 13004 0.0246768
12 66954122785_2019-10-02 retirar anuidade 13002 6004 0.0168729
13 66954122785_2019-10-02 retirar anuidade 13002 11003 0.0115369
14 66954122785_2019-10-02 retirar anuidade 13002 23001 0.0114383
0 10005203764_2019-10-14 demora muito pra abrir 14008 14008 0.460214
1 10005203764_2019-10-14 demora muito pra abrir 14008 6003 0.306784
2 10005203764_2019-10-14 demora muito pra abrir 14008 5002 0.0375907
3 10005203764_2019-10-14 demora muito pra abrir 14008 23001 0.0209104
4 10005203764_2019-10-14 demora muito pra abrir 14008 1002 0.019071
5 10005203764_2019-10-14 demora muito pra abrir 14008 23003 0.0127969
6 10005203764_2019-10-14 demora muito pra abrir 14008 22001 0.012282
7 10005203764_2019-10-14 demora muito pra abrir 14008 15002 0.011177
8 66978324904_2019-10-11 retirar anuidade 13002 13002 0.645341
9 66978324904_2019-10-11 retirar anuidade 13002 13006 0.110016
10 66978324904_2019-10-11 retirar anuidade 13002 12001 0.0861374
11 66978324904_2019-10-11 retirar anuidade 13002 13004 0.0246768
12 66978324904_2019-10-11 retirar anuidade 13002 6004 0.0168729
13 66978324904_2019-10-11 retirar anuidade 13002 11003 0.0115369
14 66978324904_2019-10-11 retirar anuidade 13002 23001 0.0114383