Pab
Pab

Reputation: 1052

Concat string Series when some values are empty strings

How can I vectorize the concatenation of strings in two columns when there are empty strings present? Here is the problem:

My columns in DF:

col1 = pd.Series(['text1','','text3'])
col2 = pd.Series(['text1','text2','text3'])

When I do:

new_col = col1.str.cat(col2, sep='/')

it gives:

new_col = pd.Series(['text1/text1','','text3/text3'])

but it should give:

new_col = pd.Series(['text1/text1','/text2','text3/text3'])

How can I do this? Pandas version 0.24.2

Upvotes: 0

Views: 910

Answers (1)

jezrael
jezrael

Reputation: 862901

If there is missing value instead empty string is necessary parameter na_rep in Series.str.cat:

col1 = pd.Series(['text1',np.nan,'text3'])
col2 = pd.Series(['text1','text2','text3'])

enter image description here

because if empty string it working nice:

col1 = pd.Series(['text1','','text3'])
col2 = pd.Series(['text1','text2','text3'])

new_col = col1.str.cat(col2, sep='/')
print (new_col)
0    text1/text1
1         /text2
2    text3/text3
dtype: object

Also is possible use alternative:

new_col = col1 + '/' + col2
print (new_col)
0    text1/text1
1         /text2
2    text3/text3
dtype: object

Upvotes: 4

Related Questions