规范大熊猫中的长数据

保罗·弗莱明

我在查找如何规范大熊猫中的长格式数据时遇到麻烦。在R中,我将投射数据,进行规范化然后融合。但是我不知道如何“反转” pivot_table,这是一个示例:

import pandas as pd

# Declare the dataframe
df = pd.DataFrame({'Time': [1, 1, 1, 2, 2, 2],
        'Machine': ['A', 'B', 'C', 'A', 'B','C'],
                   'Sensor1': [2.0,3.0,3.0,4.0,5.0,6.0],
                   'Sensor2': [1, 1, 3, 1, 1, 3]        
    })

df看起来像

    Machine  Sensor1  Sensor2  Time
0       A        2        1     1
1       B        3        1     1
2       C        3        3     1
3       A        4        1     2
4       B        5        1     2
5       C        6        3     2    

旋转

# Pivot
dfWide = pd.pivot_table(df,index = 'Time',values=['Sensor1','Sensor2'],columns='Machine')

# Normalize
machines = ['C','B','A'] # Backwards to normalize A last
for m in machines:
    dfWide.loc[:,('Sensor1',m)] = dfWide.loc[:,('Sensor1',m)] / dfWide.loc[:,('Sensor1','A')]
# Revert to original (long) form

这是什么dfWide样子

print(dfWide)
              Sensor1        Sensor2
Machine     A    B    C     A   B   C
Time                        
1           1   1.50  1.5   1   1   3
2           1   1.25  1.5   1   1   3

有谁知道如何完成最后一步?

纳德·希瑟姆(Nader Hisham)

查看 pd.melt()

In [134]:
df_melted = pd.melt(dfWide.reset_index() , id_vars=['Time'] , var_name=['Sensors' , 'Machine'])
df_melted
Out[134]:
   Time Sensors Machine value
0   1   Sensor1 A       1.00
1   2   Sensor1 A       1.00
2   1   Sensor1 B       1.50
3   2   Sensor1 B       1.25
4   1   Sensor1 C       1.50
5   2   Sensor1 C       1.50
6   1   Sensor2 A       1.00
7   2   Sensor2 A       1.00
8   1   Sensor2 B       1.00
9   2   Sensor2 B       1.00
10  1   Sensor2 C       3.00
11  2   Sensor2 C       3.00

In [148]:
res = pd.pivot_table(df_melted ,index=['Time' , 'Machine'] , columns=['Sensors']).reset_index()
res
Out[148]:
            Time    Machine      value
Sensors                     Sensor1 Sensor2
0           1           A   1.00    1
1           1           B   1.50    1
2           1           C   1.50    3
3           2           A   1.00    1
4           2           B   1.25    1
5           2           C   1.50    3

In [150]:
res.columns = ['Time' , 'Machine' , 'Sensor1' , 'Sensor2']
res
Out[150]:
  Time  Machine Sensor1 Sensor2
0   1   A       1.00    1
1   1   B       1.50    1
2   1   C       1.50    3
3   2   A       1.00    1
4   2   B       1.25    1
5   2   C       1.50    3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

规范大熊猫中的长数据

来自分类Dev

透视大熊猫中的数据

来自分类Dev

映射大熊猫中的分类数据?

来自分类Dev

如何量化大熊猫中的数据?

来自分类Dev

将大熊猫中的CSV文件导入大熊猫数据框

来自分类Dev

过滤出大熊猫数据框中的数据

来自分类Dev

大熊猫数据框中的不同连续块

来自分类Dev

如何填写大熊猫中丢失的GPS数据?

来自分类Dev

迭代时更新大熊猫中的数据框

来自分类Dev

替换大熊猫数据框中的列值

来自分类Dev

大熊猫数据框中仅某些列的总和

来自分类Dev

大熊猫列数据作为情节中的标记?

来自分类Dev

大熊猫数据框中的布尔索引

来自分类Dev

大熊猫中每组的数据处理

来自分类Dev

大熊猫:是否可以使用任意长的布尔值准则过滤数据帧?

来自分类常见问题

分割大熊猫数据框

来自分类Dev

从长到宽的数据。大熊猫

来自分类Dev

计算大熊猫数据框的元组

来自分类Dev

处理大熊猫的月度合并数据

来自分类Dev

大熊猫数据框并行处理

来自分类Dev

透视大熊猫数据并添加列

来自分类Dev

多指标大熊猫从数据帧

来自分类Dev

在大熊猫枢轴数据帧?

来自分类Dev

大熊猫-合并数据集

来自分类Dev

大熊猫数据帧的减法

来自分类Dev

大熊猫数据帧的插值

来自分类Dev

与Matplotlib不同的大熊猫中的散点图

来自分类Dev

大熊猫中的布尔子集

来自分类Dev

大熊猫中类似SQL的语句?