[英]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.stack
与DataFrame.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.