Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 计算两个数据帧的振荡_Python_Database_Pandas - Fatal编程技术网

Python 计算两个数据帧的振荡

Python 计算两个数据帧的振荡,python,database,pandas,Python,Database,Pandas,我有两个数据帧。一个代表最小值​​另一个是最大值。详情如下: 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

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

      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 = pd.DataFrame({'IDsensor': [1, 2, 3], 
                                     'Sensor_SYS1_Oscillation': [1, 5, 5],
                                     'Sensor_Oscillation': [0, 5, 400]})

当我尝试它时,它起作用了:
abs(df\u Max.subtract(df\u Min))

这同样有效:
df\u Max.subtract(df\u 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
方法可以在数据帧上高效地处理操作。

这个方法看起来可以在将ID设置为索引后进行减法,然后执行
df.abs()
df_Max.set_index('IDsensor').sub(df_Min.set_index('IDsensor')).abs().reset_index()
:)它对我也不起作用。一个充满“NaN”结果的数据帧。你知道它可能是什么吗?你更改了列名。使用df.rename使它们匹配。
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())
df_Min.set_index('IDsensor', inplace=True)
df_Max.set_index('IDsensor', inplace=True)

(df_Max - df_Min).abs()