Je souhaite fusionner deux colonnes dans une base de données:

Les deux colonnes sont

A
1 
2 
Na
Na

B
Na 
Na 
C
Na

Production

D 
1
2
C 
Na
2
Abul 3 avril 2017 à 10:59

2 réponses

Meilleure réponse

Vous pouvez utiliser combine_first ou fillna:

df['D'] = df['A'].combine_first(df['B'])

Ou:

df['D'] = df['A'].fillna(df['B'])

Avis :

Si une colonne est numérique et une autre non, mélangez types et certaines fonctions peuvent être interrompues.

3
jezrael 3 avril 2017 à 08:00

Utilisez combine_first

df.A.combine_first(df.B)

Tenez compte de la trame de données df

df = pd.DataFrame(dict(A=[1, 2, np.nan, np.nan], B=[np.nan, np.nan, 'C', np.nan]))

Alors

df.A.combine_first(df.B)

0      1
1      2
2      C
3    NaN
Name: A, dtype: object

Vous pouvez l'attribuer à une nouvelle colonne 'C'

df.assign(C=df.A.combine_first(df.B))

     A    B    C
0  1.0  NaN    1
1  2.0  NaN    2
2  NaN    C    C
3  NaN  NaN  NaN
3
piRSquared 3 avril 2017 à 08:00