如果不为空,则从现有数据帧列创建新数据帧

2024-10-06 15:17:35 发布

您现在位置: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       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

Tags: 数据namenanoceantomjefflakedave
1条回答
网友
1楼 · 发布于 2024-10-06 15:17:35

使用^{}

( df.melt('Name',value_name='Preference')
    .drop('variable',axis=1)
    .dropna()
    .sort_values('Name')
    .reset_index(drop=True) )

^{}^{}

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

相关问题 更多 >