首页 > 解决方案 > Pandas:将列名的子集转换为值

问题描述

如果我有这样的熊猫数据框:

  | F1 | F2 | F3 | Flag
  ---------------------
0 | 10 | 22 | 54 | True
1 | 3  | 77 | 9  | False

我怎样才能把它变成这样:

  | F  | Val | Flag
  -------------------
0 | F1 | 10  | True
1 | F2 | 22  | True
2 | F3 | 54  | True
3 | F1 | 3   | False
4 | F2 | 77  | False
5 | F3 | 9   | False

我已经研究过数据透视表和多索引,但我很难将它们组合在一起。

标签: pythonpython-3.xpandasdataframe

解决方案


使用df.melt

In [141]: df.melt(id_vars='Flag', var_name='F', value_name='Val')
Out[141]: 
    Flag   F  Val
0   True  F1   10
1  False  F1    3
2   True  F2   22
3  False  F2   77
4   True  F3   54
5  False  F3    9

推荐阅读