如何获取多列并将它们堆叠成 1 列,并将旧列名设为一列

how to take multiple columns and stack them into 1 column, and make the old column names a column

我想要这个table a table with monsters and columns with skill bonus's most of them null

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

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

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

|Montername|skillbonus|skill|

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

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

我知道我可以手动将每一列提取为 ["monstername",{skill}],然后将它们串联起来,然后删除 NaN。希望有更快的解决方案。

您可以使用 pandas.DataFrame.stack,这将为您提供带有 multi-index 的系列,其中第一级是您的原始列,第二级是您的列名。

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'})