首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -卸载数据

Python -卸载数据
EN

Stack Overflow用户
提问于 2014-10-29 19:31:19
回答 2查看 4.4K关注 0票数 2

寻找python解决方案。需要帮助在python中取消数据帧的旋转。这个结构对于一个基本的枢轴函数来说有点古怪,因为我想要重塑它。

当前数据框架-以下是我所拥有的

代码语言:javascript
复制
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数据框架--以下是我想要重塑它的方式

代码语言:javascript
复制
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

任何帮助都是非常感谢的!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-29 21:08:51

如果df看起来像这样:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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机械“在原始DataFrame中的位置,所以我没有尝试将它包括在结果中。列名可以重命名如下:

代码语言:javascript
复制
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
票数 6
EN

Stack Overflow用户

发布于 2014-10-29 21:11:49

或者您可以使用unstack()

代码语言:javascript
复制
In [41]:

print df
                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
In [42]:

df2 = df.stack().reset_index()
df2.columns = ['Product Category',    'Ship Cycle',  'Multiplier']
df2['Customer'] = 'ABC Mechanical'
In [43]:

print df2.icol([3,0,1,2])
          Customer Product Category Ship Cycle  Multiplier
0   ABC Mechanical   Terminal_Units   Standard        0.49
1   ABC Mechanical   Terminal_Units     15-Day        0.75
2   ABC Mechanical   Terminal_Units     10-Day        0.69
3   ABC Mechanical   Terminal_Units      5-Day        0.63
4   ABC Mechanical        Diffusers   Standard        0.35
5   ABC Mechanical        Diffusers     15-Day        0.55
6   ABC Mechanical        Diffusers     10-Day        0.45
7   ABC Mechanical        Diffusers      5-Day        0.40
8   ABC Mechanical             Vent   Standard        0.80
9   ABC Mechanical             Vent     15-Day        0.95
10  ABC Mechanical             Vent     10-Day        0.90
11  ABC Mechanical             Vent      5-Day        0.85
12  ABC Mechanical           Piping   Standard        0.70
13  ABC Mechanical           Piping     15-Day        0.85
14  ABC Mechanical           Piping     10-Day        0.80
15  ABC Mechanical           Piping      5-Day        0.75
16  ABC Mechanical           Stoves   Standard        0.60
17  ABC Mechanical           Stoves     15-Day        0.80
18  ABC Mechanical           Stoves     10-Day        0.75
19  ABC Mechanical           Stoves      5-Day        0.70
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26639003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档