Python - 以特定方式转换列中的每一行[重复]

问题描述 投票:0回答:1

我有一些如下所示的数据。

Group   Item1   Value1  Item2   Value2  ……so on Val10
 A      apple     2     pears     -4    
 B      orange   -5     banana     3    
 C      grapes    6     apple     -8    
 D      pears     8     orange     1    

我想要做的是仅生成 2 列作为 Item 和 Value,并将所有行信息放入这些列中,如下所示。

Group   Item     Value
 A      apple      2
 A      pears     -4
 B      orange    -5
 B      banana     3
 C      grapes     6
 C      apple     -8
 .       .         .
 .       .         .
 .       .         .

我尝试寻找解决方案,也尝试了 df.melt、pd.pivot_table 但无法达到预期的结果。能否请你帮忙 ? :)

python python-3.x pandas dataframe pivot
1个回答
1
投票

如果您的列正确命名为数字后缀,则可以使用

pd.wide_to_long
:

>>> (pd.wide_to_long(df, stubnames=['Item', 'Value'], i='Group', j='id')
       .droplevel('id').reset_index())

  Group    Item  Value
0     A   apple      2
1     B  orange     -5
2     C  grapes      6
3     D   pears      8
4     A   pears     -4
5     B  banana      3
6     C   apple     -8
7     D  orange      1
© www.soinside.com 2019 - 2024. All rights reserved.