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