pandas combinan dos cadenas ignoran los valores de nan

Tengo dos columnas con cuerdas. Me gustaría combinarlos e ignorar los valores de nan . Tal que

 ColA, Colb, ColA+ColB str str strstr str nan str nan str str 

Intenté df['ColA+ColB'] = df['ColA'] + df['ColB'] pero eso crea un valor nan si cualquiera de las columnas es nan. También he pensado en usar concat .

Supongo que podría seguir con eso, y luego usar algo de df.ColA+ColB[df[ColA] = nan] = df[ColA] pero eso parece ser una df.ColA+ColB[df[ColA] = nan] = df[ColA] solución.

Llame a fillna y pase una cadena vacía como el valor de relleno y luego sum con param axis=1 :

 In [3]: df = pd.DataFrame({'a':['asd',np.NaN,'asdsa'], 'b':['asdas','asdas',np.NaN]}) df Out[3]: ab 0 asd asdas 1 NaN asdas 2 asdsa NaN In [7]: df['a+b'] = df.fillna('').sum(axis=1) df Out[7]: ab a+b 0 asd asdas asdasdas 1 NaN asdas asdas 2 asdsa NaN asdsa 

Podrías llenar el NaN con una cadena vacía:

 df['ColA+ColB'] = df['ColA'].fillna('') + df['ColB'].fillna('') 

Usando apply y str.cat puedes

 In [723]: df Out[723]: ab 0 asd asdas 1 NaN asdas 2 asdsa NaN In [724]: df['a+b'] = df.apply(lambda x: x.str.cat(sep=''), axis=1) In [725]: df Out[725]: ab a+b 0 asd asdas asdasdas 1 NaN asdas asdas 2 asdsa NaN asdsa