如何获取多列并将它们堆叠成 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'})
我想要这个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'})