Рассчитать колебания двух кадров данных - PullRequest
2 голосов
/ 12 апреля 2020

У меня есть два кадра данных. Один представляет минимальные значения, а другой максимальные значения. Как показано ниже:

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

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Два ключевых изменения: используйте индекс и используйте метод abs

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

(df_Max - df_Min).abs()

Установка индекса таким образом позволяет информационным кадрам выравниваться по идентификатору датчика для вычитания, даже если они созданы с идентификаторами в разных заказы. Использование метода .abs позволяет эффективно обрабатывать операции над фреймом данных.

1 голос
/ 12 апреля 2020

Это сработало, когда я попробовал: 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...