从多列创建更简单的行



我有一个看起来像这样的数据帧:

Movie        Action    Adventure    Duration Director   More info...
SpongeBob       0          1           123      Karl
The Avengers    1          1           134      Annie

但我想把它分成几行,只包含电影,一次一种类型,还有更多的专栏,比如"导演"one_answers"持续时间"。转换后,DataFrame应该是这样的:

Movie            Genre       Duration Director  (No more extra info)
SpongeBob      Adventure        123      Karl
The Avengers   Adventure        134      Annie
The Avengers   Action           134      Annie

这里有一种方法:

df.melt(['Movie', 'Duration', 'Director', 'More info'], var_name='Genre')
.query('value == 1')
.drop('value', axis=1)

输出:

Movie  Duration Director More info      Genre
1  The Avengers       134    Annie         B     Action
2     SpongeBob       123     Karl         A  Adventure
3  The Avengers       134    Annie         B  Adventure

使用melt重塑数据帧的形状,然后筛选值等于1的行,然后删除值列。

相关内容

最新更新