Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-Unpivot数据_Python_Pandas - Fatal编程技术网

Python-Unpivot数据

Python-Unpivot数据,python,pandas,Python,Pandas,正在寻找python解决方案。在python中取消激活数据帧时需要帮助。这个结构对于我想要重塑它的基本轴心函数来说有点古怪 当前数据帧-以下是我所拥有的 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

正在寻找python解决方案。在
python
中取消激活数据帧时需要帮助。这个结构对于我想要重塑它的基本轴心函数来说有点古怪

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

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
未插入的数据帧-以下是我想要如何重塑它

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
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
然后
pd.melt
使您接近所需的数据帧:

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”在原始数据框中的位置,所以我没有尝试将其包含在结果中。列名可以按如下方式重命名:

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
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

或者您可以使用
取消堆栈()


“我试图利用
pd.melt()
”不是一个有用的说法。向我们展示您的尝试。@pnuts一个python解决方案。很抱歉数据不准确,我已经更新了df。@PaulH我没有发布我的尝试,因为我不确定是否可以使用
unpivot
方法。因此,我正在寻求关于最佳方法的建议。一个可复制/粘贴的示例演示您的尝试总是很有帮助的。既然您想要一个python解决方案,就不要再谈excel了,因为它不再相关了。从阅读数据后获得的数据开始。ABC Mechanical应该来自哪里?这是您的索引列的名称吗?(我无法从您当前的数据帧图片中分辨出该名称存储在何处。)这并不重要,但我倾向于在未融合时使用
var\u name
value\u name
。但是,想不出一个聪明的方法来更改
索引
列名。@unutbu“ABC Mechanical”显示在原始df的左上角,但感谢您的回复。这是很有见地的。我还在学习熊猫图书馆的威力。@MikeV:请编辑问题,将
df.columns
df.index
包括在内。这可能会给我们一个线索什么是
ABC Mechanical
。.sort“是”。sort_值在pandas 0.22中