我有一个Pandas数据框,其中的行具有属性并具有多个ID的潜力。例如:
Name Weapon Color ID1 ID2 ID3
Leo Sword Blue 11 12
Raph Sai Red 13
Don Bo Purple 14 15 16
Mike Nunchuck Orange 17
我想在保留行属性的同时使这些ID成为自己的行。例如:
Name Weapon Color ID
Leo Sword Blue 11
Leo Sword Blue 12
Raph Sai Red 13
Don Bo Purple 14
Don Bo Purple 15
Don Bo Purple 16
Mike Nunchuck Orange 17
如何使用选择的特定列从中创建行以及从哪个列保留数据?
答案 0 :(得分:4)
您可以使用:
df.melt(['Name','Weapon','Color'],value_name='ID').drop('variable',1).dropna()
Name Weapon Color ID
0 Leo Sword Blue 11.0
1 Raph Sai Red 13.0
2 Don Bo Purple 14.0
3 Mike Nunchuck Orange 17.0
4 Leo Sword Blue 12.0
6 Don Bo Purple 15.0
10 Don Bo Purple 16.0
答案 1 :(得分:2)
您还可以使用stack()
来保持数据的原始顺序:
(df.set_index(['Name', 'Weapon', 'Color'])
.stack().reset_index(level=-1, drop=True)
.reset_index(name='ID'))
输出:
Name Weapon Color ID
0 Leo Sword Blue 11.0
1 Leo Sword Blue 12.0
2 Raph Sai Red 13.0
3 Don Bo Purple 14.0
4 Don Bo Purple 15.0
5 Don Bo Purple 16.0
6 Mike Nunchuck Orange 17.0
请注意,这将忽略原始数据帧的索引。