0

我想把这张桌子拿来 一张桌子,上面有怪物和技能加成的柱子,大部分都是空的

|Montername|survival|stealth|...(大概有 20 列)

|abc.......|1.......|4......|

我想快速堆叠它们,所以我只有 3 列,

|Montername|技能奖励|技能|

|abc.......|1.........|生存|

|abc.......|4.........|隐身|

我知道我可以手动将每一列拉为 ["monstername",{skill}],然后将它们与 concatenate 堆叠在一起,然后删除 NaN。希望有更快的解决方案。

4

1 回答 1

0

您可以使用pandas.DataFrame.stack,它将为您提供具有多索引的系列,其中第一级是您的原始列,第二级是您的列名。

stacked = df.stack()

如果你想把它变成一个带有列标签的数据框,你需要将它提供给pd.DataFrame(),重置索引,并重命名列:

stacked = pd.DataFrame(stacked)
stacked = stacked.reset_index()
stacked = stacked.rename(columns = {'level_0': 'Monstername', 'level_1': 'skillbonus', 0: 'skill'})
于 2020-09-22T03:05:31.500 回答