重塑我的熊猫数据框架

时间:2017-08-26 02:17:42

标签: python pandas

我有以下数据框:

timeZones=model.timeZones

我想将其转化为以下内容:

   name     Jan     Feb     Mar     Apr     May     Jun     Jul     Aug  \
0     IBM  156.08  160.01  159.81  165.22  172.25  167.15  164.75  152.77   
1    MSFT   45.51   43.08   42.13   43.47   47.53   45.96   45.61   45.51   
2  GOOGLE  512.42  537.99  559.72  540.50  535.24  532.92  590.09  636.84   
3   APPLE  110.64  125.43  125.97  127.29  128.76  127.81  125.34  113.39   

      Sep     Oct     Nov     Dec  
0  145.36  146.11  137.21  137.96  
1   43.56   48.70   53.88   55.40  
2  617.93  663.59  735.39  755.35  
3  112.80  113.36  118.16  111.73  

我一直在摆弄熔化和枢轴,但不知道如何让它发挥作用。 任何建议将不胜感激。

由于

3 个答案:

答案 0 :(得分:2)

让我们使用'set_index','rename_axis'和T进行转置。

df.set_index('name')\
  .rename_axis(None).T\
  .rename_axis('Month')\
  .reset_index()

输出:

  Month     IBM   MSFT  GOOGLE   APPLE
0   Jan  156.08  45.51  512.42  110.64
1   Feb  160.01  43.08  537.99  125.43
2   Mar  159.81  42.13  559.72  125.97
3   Apr  165.22  43.47  540.50  127.29
4   May  172.25  47.53  535.24  128.76
5   Jun  167.15  45.96  532.92  127.81
6   Jul  164.75  45.61  590.09  125.34
7   Aug  152.77  45.51  636.84  113.39

答案 1 :(得分:1)

创意方式

pd.DataFrame({'Month': df.columns[1:]}).assign(**{c: v for c, *v in df.values})

   Month   APPLE  GOOGLE     IBM   MSFT
0    Jan  110.64  512.42  156.08  45.51
1    Feb  125.43  537.99  160.01  43.08
2    Mar  125.97  559.72  159.81  42.13
3    Apr  127.29  540.50  165.22  43.47
4    May  128.76  535.24  172.25  47.53
5    Jun  127.81  532.92  167.15  45.96
6    Jul  125.34  590.09  164.75  45.61
7    Aug  113.39  636.84  152.77  45.51
8    Sep  112.80  617.93  145.36  43.56
9    Oct  113.36  663.59  146.11  48.70
10   Nov  118.16  735.39  137.21  53.88
11   Dec  111.73  755.35  137.96  55.40

答案 2 :(得分:-1)

Set_index基本上按元素更改分组,并根据您指定的索引对数据进行分组,因此如果您将set_index设置为组的名称,则应解决您的问题。