Или combine_first
+ drop
:
df['two']=df.pop('b').combine_first(df.pop('c')).combine_first(df.pop('d'))
df=df.drop(['b','c','d'],1)
df.columns=['index','one','two']
или fillna
:
df['two']=df.pop('b').fillna(df.pop('c')).fillna(df.pop('d'))
df=df.drop(['b','c','d'],1)
df.columns=['index','one','two']
Оба случая:
print(df)
Является:
index one two
0 0 1 2.0
1 1 2 3.0
2 2 5 6.0
3 3 1 5.0
Если хотите выводить как @ jezrael's, добавьте: (в обоих случаях все в порядке)
df=df.set_index('index')
А потом:
print(df)
Является:
one two
index
0 1 2.0
1 2 3.0
2 5 6.0
3 1 5.0