我有一个小的数据框-六行(不计算标题)和53列(商店名称,以及过去一年的其余每周销售额)。每行包含一个特定的商店,每列包含该商店的名称和每周的销售额。我需要转置数据,以便星期显示为行,商店显示为列,其销售额显示为行。
要生成输入数据:
\s(\d+)\.(\d+)\.(\d+)([a-zA-Z])?\s(?!\d)
我的输出将索引号放在每个商店名称的上方(0到5),然后每一列都以StoreName(一周以上)开始,然后是每个商店名称。但是,我无法通过它们的名称来操纵它们。
有没有一种方法可以清除这些索引号,以便我可以直接使用生成的列名(例如,将“ StoreName”重命名为“ WeekEnding”,并引用每个商店列(“ Store1”,“ Store2”,等等?)
答案 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