# 'How to merge every two columns, with pandas, substituting only if the left column value is nan or 0 [duplicate]

I have 2n columns and each pair looks like this:

```
1 0
2 0
45 1
44 10
43 22
0 55
0 46
0 75
```

I want to turn each pair of columns into a single one where the 0 or NaN of the left column are substituted by the values on the right column. In this example the result would be

```
1
2
45
44
43
55
46
75
```

And it is important that this is done for every pair of columns in the dataframe.

## Solution 1:^{[1]}

try this :

```
import pandas as pd
import numpy as np
d = {'col1': [1,2,45,44,43,0,0,0,2],
'col2': [0,0,1,10,22,55,46,75,np.nan],
}
df = pd.DataFrame(data=d)
df=df.replace(np.nan,0)
df['col2']=np.where(df['col1']==0,df['col2'],df['col1'])
```

## Solution 2:^{[2]}

First, a dataframe is created from the dictionary. Then all 0 are replaced by `np.nan`

. This has the advantage that you can use the `fillna()`

function afterwards to replace all `np.nan`

values with the corresponding value from `col2`

.

```
import pandas as pd
import numpy as np
d = {'col1': [0,0,1,10,22,55,46,34,np.nan],
'col2': [1,2,45,44,43,0,0,0,2]}
df = pd.DataFrame(d)
df.replace(0, np.nan, inplace=True)
df['col1'].fillna(df['col2']).to_frame()
```

## Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution | Source |
---|---|

Solution 1 | |

Solution 2 |