转置数据框后的列名

时间:2019-10-01 14:46:11

标签: pandas dataframe transpose

我有一个小的数据框-六行(不计算标题)和53列(商店名称,以及过去一年的其余每周销售额)。每行包含一个特定的商店,每列包含该商店的名称和每周的销售额。我需要转置数据,以便星期显示为行,商店显示为列,其销售额显示为行。

要生成输入数据:

\s(\d+)\.(\d+)\.(\d+)([a-zA-Z])?\s(?!\d)

我的输出将索引号放在每个商店名称的上方(0到5),然后每一列都以StoreName(一周以上)开始,然后是每个商店名称。但是,我无法通过它们的名称来操纵它们。

有没有一种方法可以清除这些索引号,以便我可以直接使用生成的列名(例如,将“ StoreName”重命名为“ WeekEnding”,并引用每个商店列(“ Store1”,“ Store2”,等等?)

1 个答案:

答案 0 :(得分:1)

IIUC,您需要先set_index,然后转置T

请参见以下示例:

df  = pd.DataFrame({'Store':[*'ABCDE'],
                    'Week 1':np.random.randint(50,200, 5), 
                    'Week 2':np.random.randint(50,200, 5),
                    'Week 3':np.random.randint(50,200, 5)})

输入数据框:

  Store  Week 1  Week 2  Week 3
0     A      99     163     148
1     B     119      86      92
2     C     145      98     162
3     D     144     143     199
4     E      50     181     177

现在,设置索引并转置:

df_out = df.set_index('Store').T
df_out

输出:

Store     A    B    C    D    E
Week 1   99  119  145  144   50
Week 2  163   86   98  143  181
Week 3  148   92  162  199  177