寻找 python 解决方案。在 python 中取消旋转数据框时需要帮助。对于我想要 reshape 它的基本枢轴函数,该结构有点时髦。
当前数据框 - 这是我所拥有的
ABC Mechanical
Standard 15-Day 10-Day 5-Day
Terminal Units 0.49 0.75 0.69 0.63
Diffusers 0.35 0.55 0.45 0.4
Vent 0.8 0.95 0.9 0.85
Piping 0.7 0.85 0.8 0.75
Stoves 0.6 0.8 0.75 0.7
UNPIVOTED DATA FRAME - 这是我想 reshape 它的方式
df.columns= Customer, Product Category, Ship Cycle, Multiplier
df.index= ABC Mechanical
Customer Product Category Ship Cycle Multiplier
ABC Mechanical Terminal Units Standard 0.49
ABC Mechanical Terminal Units 15-Day 0.75
ABC Mechanical Terminal Units 10-Day 0.69
ABC Mechanical Terminal Units 5-Day 0.63
ABC Mechanical Diffusers Standard 0.35
ABC Mechanical Diffusers 15-Day 0.55
ABC Mechanical Diffusers 10-Day 0.45
ABC Mechanical Diffusers 5-Day 0.4
非常感谢任何帮助!
谢谢!
请您参考如下方法:
如果 df 看起来像这样:
In [26]: df
Out[26]:
Standard 15-Day 10-Day 5-Day
Terminal Units 0.49 0.75 0.69 0.63
Diffusers 0.35 0.55 0.45 0.40
Vent 0.80 0.95 0.90 0.85
Piping 0.70 0.85 0.80 0.75
Stoves 0.60 0.80 0.75 0.70
然后 pd.melt 让您接近所需的 DataFrame:
In [27]: pd.melt(df.reset_index(), id_vars=['index']).sort_values(by=['index'])
Out[27]:
index variable value
1 Diffusers Standard 0.35
6 Diffusers 15-Day 0.55
11 Diffusers 10-Day 0.45
16 Diffusers 5-Day 0.40
3 Piping Standard 0.70
8 Piping 15-Day 0.85
13 Piping 10-Day 0.80
18 Piping 5-Day 0.75
4 Stoves Standard 0.60
9 Stoves 15-Day 0.80
14 Stoves 10-Day 0.75
19 Stoves 5-Day 0.70
0 Terminal Units Standard 0.49
5 Terminal Units 15-Day 0.75
10 Terminal Units 10-Day 0.69
15 Terminal Units 5-Day 0.63
2 Vent Standard 0.80
7 Vent 15-Day 0.95
12 Vent 10-Day 0.90
17 Vent 5-Day 0.85
我不明白“ABC Mechanical”在原始 DataFrame 中的位置,因此我没有尝试将其包含在结果中。列名可以这样重命名:
In [28]: df = pd.melt(df.reset_index(), id_vars=['index']).sort_values(by=['index'])
In [29]: df.columns = ['Product Category', 'Ship Cycle', 'Multiplier']
In [31]: df.head()
Out[31]:
Product Category Ship Cycle Multiplier
1 Diffusers Standard 0.35
6 Diffusers 15-Day 0.55
11 Diffusers 10-Day 0.45
16 Diffusers 5-Day 0.40
3 Piping Standard 0.70
