首页 > 解决方案 > 计算两个数据帧的振荡

问题描述

我有两个数据框。一个代表最小值,另一个代表最大值。如下:

      df_Min = pd.DataFrame({'IDsensor': [1, 2, 3], 
                            'Sensor_SYS1_Min': [54, 55, 75],
                            'Sensor_SYS2_Min': [320, 315, 400]})


      df_Max = pd.DataFrame({'IDsensor': [1, 2, 3], 
                             'Sensor_SYS1_Max': [55, 60, 80],
                             'Sensor_SYS2_Max': [320, 320, 800]})

我想计算它们之间的差异。即最大值和最小值之间的振荡。

我尝试进行以下操作(此操作不正确):

      df_Oscillation = abs(df_Max - df_Min) 

我希望输出是这样的:

      df_Oscillation = pd.DataFrame({'IDsensor': [1, 2, 3], 
                                     'Sensor_SYS1_Oscillation': [1, 5, 5],
                                     'Sensor_Oscillation': [0, 5, 400]})

标签: pythondatabasepandas

解决方案


两个关键变化:使用索引和使用 abs 方法

df_Min.set_index('IDsensor', inplace=True)
df_Max.set_index('IDsensor', inplace=True)

(df_Max - df_Min).abs()

像这样设置索引允许数据帧在传感器 ID 上对齐以进行减法,即使它们是使用不同顺序的 ID 创建的。使用该.abs方法可以在数据帧上有效地处理操作。


推荐阅读