如果dataframes merg上的值相等,则在行中追加列

2024-05-19 02:54:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

df1型:

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

和df2:

                      id                    text
0  10005203764_2019-10-14  demora muito pra abrir
1  66978324904_2019-10-11        retirar anuidade

我需要一个df3,每当df2上的列文本等于df1时,列“top\u class”“class\u name”和“confidence”将附加到相应的行中,因为您可以看到它们有不同的“id”值,唯一的共同值是text

期望输出:

测向3

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

我试过d3 = pd.merge(d1, d2, on='text', how='outer')

但是df2的值被附加在置信度的右边,没有“top\u class”、“class\u name”和“confidence”

                   id_x                                               text top_class class_name  confidence                    id_y
0   66957231351_2019-10-07                             demora muito pra abrir     14008      14008    0.460214  10005203764_2019-10-14
1   66957231351_2019-10-07                             demora muito pra abrir     14008      06003    0.306784  10005203764_2019-10-14
2   66957231351_2019-10-07                             demora muito pra abrir     14008      05002    0.037591  10005203764_2019-10-14
3   66957231351_2019-10-07                             demora muito pra abrir     14008      23001    0.020910  10005203764_2019-10-14
4   66957231351_2019-10-07                             demora muito pra abrir     14008      01002    0.019071  10005203764_2019-10-14
5   66957231351_2019-10-07                             demora muito pra abrir     14008      23003    0.012797  10005203764_2019-10-14
6   66957231351_2019-10-07                             demora muito pra abrir     14008      22001    0.012282  10005203764_2019-10-14
7   66957231351_2019-10-07                             demora muito pra abrir     14008      15002    0.011177  10005203764_2019-10-14
8   66954122785_2019-10-02                                   retirar anuidade     13002      13002    0.645341  66978324904_2019-10-11
9   66954122785_2019-10-02                                   retirar anuidade     13002      13006    0.110016  66978324904_2019-10-11
10  66954122785_2019-10-02                                   retirar anuidade     13002      12001    0.086137  66978324904_2019-10-11
11  66954122785_2019-10-02                                   retirar anuidade     13002      13004    0.024677  66978324904_2019-10-11
12  66954122785_2019-10-02                                   retirar anuidade     13002      06004    0.016873  66978324904_2019-10-11
13  66954122785_2019-10-02                                   retirar anuidade     13002      11003    0.011537  66978324904_2019-10-11
14  66954122785_2019-10-02                                   retirar anuidade     13002      23001    0.011438  66978324904_2019-10-11
15  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      15002    0.403148                     NaN
16  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      13004    0.109898                     NaN
17  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      02016    0.070969                     NaN
18  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      10001    0.045830                     NaN
19  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      21003    0.021229                     NaN
20  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      01001    0.020357                     NaN
21  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      03004    0.019878                     NaN
22  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      21007    0.018930                     NaN
23  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      07004    0.015577                     NaN
24  10005179725_2019-10-31  gostaria mto que vcs abaixa o valor do meu cre...     15002      11004    0.015030                     NaN
25  10018926930_2019-10-09  minha sugestão,  e aumento de limite, pq faz m...     15002      15002    0.967641                     NaN
26  10018926930_2019-10-09  minha sugestão,  e aumento de limite, pq faz m...     15002      14007    0.011590                     NaN
27  66978696202_2019-10-15  as informcacoes do app nao sao atualizadas, na...     02007      02007    0.755904                     NaN
28  66978696202_2019-10-15  as informcacoes do app nao sao atualizadas, na...     02007      19005    0.147079                     NaN
29  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      02015    0.500607                     NaN
30  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      02006    0.099167                     NaN
31  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      02001    0.071040                     NaN
32  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      02017    0.050661                     NaN
33  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      23002    0.038053                     NaN
34  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      17002    0.036348                     NaN
35  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      02002    0.026836                     NaN
36  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      02007    0.020685                     NaN
37  66975168031_2019-10-22  app demora para atualizar, fatura vira cada di...     02015      23003    0.012554                     NaN

提前谢谢,谢谢你的帮助


Tags: appmtonanvcsdoclassqueabrir
2条回答

首先,发生这种情况是因为当您与一个整数列合并时,合并会丢失数据。 然后:

d2["top_class"] = d2["top_class"].apply(lambda x: str(x))

发生这种情况是因为列来自整数,请将其转换为字符串,然后再转换回整数或浮点

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

相关问题 更多 >

    热门问题