I am trying but not able to remove nan
while combining two columns of a DataFrame
.
Data is like:
feedback_id
For an in-place solution, you can use pd.Series.update with pd.DataFrame.pop:
df['feedback_id'].update(df.pop('_id'))
print(df)
feedback_id
0 568a8c25cac4991645c287ac
1 568df45b177e30c6487d3603
2 568df434832b090048f34974
3 568cd22e9e82dfc166d7dff1
4 568df3f0832b090048f34711
5 568e5a38b4a797c664143dda
You can use combine_first or fillna:
print df['feedback_id'].combine_first(df['_id'])
0 568a8c25cac4991645c287ac
1 568df45b177e30c6487d3603
2 568df434832b090048f34974
3 568cd22e9e82dfc166d7dff1
4 568df3f0832b090048f34711
5 568e5a38b4a797c664143dda
Name: feedback_id, dtype: object
print df['feedback_id'].fillna(df['_id'])
0 568a8c25cac4991645c287ac
1 568df45b177e30c6487d3603
2 568df434832b090048f34974
3 568cd22e9e82dfc166d7dff1
4 568df3f0832b090048f34711
5 568e5a38b4a797c664143dda
Name: feedback_id, dtype: object
If you want a solution that doesn't require referencing df
twice or any of its columns explicitly:
df.bfill(axis=1).iloc[:, 0]
With two columns, this will copy non-null values from the right column into the left, then select the left column.