计算两个数据帧的振荡

2024-04-26 10:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧。一个代表最小值​​另一个是最大值。详情如下:

      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]})

Tags: 数据dataframedf代表abs差异sensormin
2条回答

当我尝试它时,它起了作用:abs(df_Max.subtract(df_Min))
这也起了作用:df_Max.subtract(df_Min).abs()

import pandas as pd
df_Min = pd.DataFrame({'IDsensor': [1, 2, 3], 
                      'Sensor_SYS1': [54, 55, 75],
                      'Sensor_SYS2': [320, 315, 400]})

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

def print_df(title, df):
  return print(f'{title}\n{df}\n')

print_df('df_Min', df_Min)
print_df('df_Max', df_Max)
print_df('df_Oscillation', df_Max.subtract(df_Min).abs())

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

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

(df_Max - df_Min).abs()

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

相关问题 更多 >