简体   繁体   English

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

[英]Creating new dataframe from existing dataframe columns if not empty

I have a Pandas DataFrame with columns that contain data for some rows and not for others.我有一个 Pandas DataFrame,其中的列包含某些行的数据而不是其他行的数据。 I need to merge several columns into a single column, removing missing data.我需要将几列合并为一列,删除丢失的数据。 For example:例如:

   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

Needs to become this:需要变成这样:

   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

Use DataFrame.melt :使用DataFrame.melt

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

or DataFrame.stack with DataFrame.set_index :DataFrame.stackDataFrame.set_index

df.set_index('Name').stack().rename('Preference').reset_index(level=['Name',0],drop=0)

Output输出

   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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM