Python 从现有数据帧列创建新数据帧(如果不为空)

Python 从现有数据帧列创建新数据帧(如果不为空),python,pandas,Python,Pandas,我有一个数据框,其中的列包含某些行的数据,而不包含其他行的数据。我需要将几列合并成一列,删除丢失的数据。例如: Name Preference_1 Preference_2 Preference_3 Preference_4 0 Dave Beach Lake Mountain Desert 1 Jeff Outdoors NaN NaN NaN 2 Tom

我有一个数据框,其中的列包含某些行的数据,而不包含其他行的数据。我需要将几列合并成一列,删除丢失的数据。例如:

   Name     Preference_1 Preference_2 Preference_3 Preference_4
0  Dave        Beach         Lake     Mountain       Desert
1  Jeff     Outdoors          NaN          NaN          NaN
2   Tom       Forest        Ocean        Swamp          NaN
需要做到这一点:

   Name   Preference
0  Dave      Beach
1  Dave       Lake
2  Dave   Mountain
3  Dave     Desert
4  Jeff   Outdoors
5  Tom      Ocean
6  Tom      Swamp
7  Tom     Forest
使用:

或与:

输出

   Name Preference
0  Dave      Beach
1  Dave       Lake
2  Dave   Mountain
3  Dave     Desert
4  Jeff   Outdoors
5   Tom     Forest
6   Tom      Ocean
7   Tom      Swamp

为什么
海洋
沼泽
在输出中从
汤姆
移动到
杰夫
?你想要@AndyL。你说得对那是个打字错误谢谢你非常感谢
df.set_index('Name').stack().rename('Preference').reset_index(level=['Name',0],drop=0)
   Name Preference
0  Dave      Beach
1  Dave       Lake
2  Dave   Mountain
3  Dave     Desert
4  Jeff   Outdoors
5   Tom     Forest
6   Tom      Ocean
7   Tom      Swamp