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()