我有一个看起来像这样的数据帧:
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的行,然后删除值列。