1

I have this df, made of two appended dfs, where team values are repeated:

            team      mando           mean1           mean2     posicao  \
0           Vasco  visitante            NaN            3.610000  Atacante   
1        Flamengo  visitante            NaN            3.106111  Atacante   
2          Grêmio  visitante            NaN            3.035833  Atacante   
3    Athlético-PR  visitante            NaN            2.950417  Atacante   
4       Palmeiras  visitante            NaN            2.899444  Atacante   
5     Corinthians  visitante            NaN            2.837500  Atacante   
6       São Paulo  visitante            NaN            2.800833  Atacante   
7        Coritiba  visitante            NaN            2.580476  Atacante   
8     Atlético-MG  visitante            NaN            2.540556  Atacante   
9          Santos  visitante            NaN            2.502222  Atacante   
10          Bahia  visitante            NaN            2.339583  Atacante   
11  Internacional  visitante            NaN            2.283333  Atacante   
12       Botafogo  visitante            NaN            2.265278  Atacante   
13          Ceará  visitante            NaN            2.145278  Atacante   
14      Fortaleza  visitante            NaN            1.924898  Atacante   
15     Bragantino  visitante            NaN            1.797143  Atacante   
16          Goiás  visitante            NaN            1.786250  Atacante   
17    Atlético-GO  visitante            NaN            1.650000  Atacante   
18     Fluminense  visitante            NaN            1.335000  Atacante   
19          Sport  visitante            NaN            0.904762  Atacante   
0     Atlético-MG  visitante       4.045833                 NaN  Atacante   
1     Corinthians  visitante       3.971250                 NaN  Atacante   
2           Sport  visitante       3.429000                 NaN  Atacante   
3           Goiás  visitante       3.240000                 NaN  Atacante   
4      Bragantino  visitante       3.226944                 NaN  Atacante   
5        Botafogo  visitante       3.065000                 NaN  Atacante   
6      Fluminense  visitante       2.979762                 NaN  Atacante   
7           Ceará  visitante       2.649660                 NaN  Atacante   
8        Flamengo  visitante       2.553333                 NaN  Atacante   
9     Atlético-GO  visitante       2.475000                 NaN  Atacante   
10       Coritiba  visitante       2.010278                 NaN  Atacante   
11      São Paulo  visitante       1.947667                 NaN  Atacante   
12         Santos  visitante       1.918810                 NaN  Atacante   
13      Fortaleza  visitante       1.893056                 NaN  Atacante   
14          Bahia  visitante       1.735476                 NaN  Atacante   
15  Internacional  visitante       1.708056                 NaN  Atacante   
16      Palmeiras  visitante       1.552500                 NaN  Atacante   
17          Vasco  visitante       1.384722                 NaN  Atacante   
18   Athlético-PR  visitante       1.291667                 NaN  Atacante   
19         Grêmio  visitante       0.590000                 NaN  Atacante 

How do I merge this and get rid of all NaN?

Expected result:

            clube      mando      mean1               mean2      posicao  \
0           Vasco  visitante      1.384722            3.610000   Atacante   
1        Flamengo  visitante      2.553333            3.106111   Atacante   
2          Grêmio  visitante      0.590000            3.035833   Atacante
...       ...       ...           ...                 ...        ...
19        Sport    visitante      3.429000            0.904762   Atacante

    
8-Bit Borges
  • 9,643
  • 29
  • 101
  • 198

2 Answers2

1

Just merge instead of appending:

 all_means = all_means.merge(df_target, on = ['clube','mando','posicao'])

cs95's great pandas merging self Q&A

noah
  • 2,616
  • 13
  • 27
1

combine_first work. To ensure that we combine values in right order you have to sort values and make them stay in order

#your data table converted to csv
table = pd.read_csv("table.csv")

tb1 = table[:20].sort_values("team").set_index(np.arange(20))
tb2 = table[20:].sort_values("team").set_index(np.arange(20)))

new_tb = tb1.combine_first(tb2)
print(new_tb)

outputs:

             team      mando     mean1     mean2   posicao
0    Athlético-PR  visitante  1.291667  2.950417  Atacante
1     Atlético-GO  visitante  2.475000  1.650000  Atacante
2     Atlético-MG  visitante  4.045833  2.540556  Atacante
3           Bahia  visitante  1.735476  2.339583  Atacante
4        Botafogo  visitante  3.065000  2.265278  Atacante
5      Bragantino  visitante  3.226944  1.797143  Atacante
6           Ceará  visitante  2.649660  2.145278  Atacante
7     Corinthians  visitante  3.971250  2.837500  Atacante
8        Coritiba  visitante  2.010278  2.580476  Atacante
9        Flamengo  visitante  2.553333  3.106111  Atacante
10     Fluminense  visitante  2.979762  1.335000  Atacante
11      Fortaleza  visitante  1.893056  1.924898  Atacante
12          Goiás  visitante  3.240000  1.786250  Atacante
13         Grêmio  visitante  0.590000  3.035833  Atacante
14  Internacional  visitante  1.708056  2.283333  Atacante
15      Palmeiras  visitante  1.552500  2.899444  Atacante
16         Santos  visitante  1.918810  2.502222  Atacante
17          Sport  visitante  3.429000  0.904762  Atacante
18      São_Paulo  visitante  1.947667  2.800833  Atacante
19          Vasco  visitante  1.384722  3.610000  Atacante

table.csv

team,mando,mean1,mean2,posicao
0,Vasco,visitante,NaN,3.610000,Atacante
1,Flamengo,visitante,NaN,3.106111,Atacante
2,Grêmio,visitante,NaN,3.035833,Atacante
3,Athlético-PR,visitante,NaN,2.950417,Atacante
4,Palmeiras,visitante,NaN,2.899444,Atacante
5,Corinthians,visitante,NaN,2.837500,Atacante
6,São_Paulo,visitante,NaN,2.800833,Atacante
7,Coritiba,visitante,NaN,2.580476,Atacante
8,Atlético-MG,visitante,NaN,2.540556,Atacante
9,Santos,visitante,NaN,2.502222,Atacante
10,Bahia,visitante,NaN,2.339583,Atacante
11,Internacional,visitante,NaN,2.283333,Atacante
12,Botafogo,visitante,NaN,2.265278,Atacante
13,Ceará,visitante,NaN,2.145278,Atacante
14,Fortaleza,visitante,NaN,1.924898,Atacante
15,Bragantino,visitante,NaN,1.797143,Atacante
16,Goiás,visitante,NaN,1.786250,Atacante
17,Atlético-GO,visitante,NaN,1.650000,Atacante
18,Fluminense,visitante,NaN,1.335000,Atacante
19,Sport,visitante,NaN,0.904762,Atacante
0,Atlético-MG,visitante,4.045833,NaN,Atacante
1,Corinthians,visitante,3.971250,NaN,Atacante
2,Sport,visitante,3.429000,NaN,Atacante
3,Goiás,visitante,3.240000,NaN,Atacante
4,Bragantino,visitante,3.226944,NaN,Atacante
5,Botafogo,visitante,3.065000,NaN,Atacante
6,Fluminense,visitante,2.979762,NaN,Atacante
7,Ceará,visitante,2.649660,NaN,Atacante
8,Flamengo,visitante,2.553333,NaN,Atacante
9,Atlético-GO,visitante,2.475000,NaN,Atacante
10,Coritiba,visitante,2.010278,NaN,Atacante
11,São_Paulo,visitante,1.947667,NaN,Atacante
12,Santos,visitante,1.918810,NaN,Atacante
13,Fortaleza,visitante,1.893056,NaN,Atacante
14,Bahia,visitante,1.735476,NaN,Atacante
15,Internacional,visitante,1.708056,NaN,Atacante
16,Palmeiras,visitante,1.552500,NaN,Atacante
17,Vasco,visitante,1.384722,NaN,Atacante
18,Athlético-PR,visitante,1.291667,NaN,Atacante
19,Grêmio,visitante,0.590000,NaN,Atacante
woblob
  • 1,349
  • 9
  • 13