Фрейм данных Pandas: Управление значением в одном столбце на основе значения в другом столбце

#python #pandas #dataframe

Вопрос:

У меня есть два фрейма данных Pandas df и df_0:

 df = pd.DataFrame({'condition': [1, 2, 3],   'value': [1, 2, 3]}) df_0 = pd.DataFrame({'condition': [1, 2],   'value': [1, 3]})  condition value 0 1 1 1 2 2 1 3 3  condition value 0 1 1 1 2 3  

Я хочу вычесть (-=) значение в df_0 из значения (столбца) в df, если соотв. значение условия/столбец одинаковы.

 Pseudo code  df_desired_result = pd.DataFrame({'condition': [1, 2, 3],   'value': [0, -1, 3]})   condition value 0 1 0 1 2 -1 2 3 3  

Как я могу этого достичь?

Заранее большое спасибо за ваш ответ!

Люси

Ответ №1:

Панды выполняют арифметические операции по индексу. просто установите «условие» в качестве индекса, а затем заполните значения NaN

 import pandas as pd import numpy as np df = pd.DataFrame({'condition': [1, 2, 3],   'value': [1, 2, 3]}) df_0 = pd.DataFrame({'condition': [1, 2],   'value': [1, 3]}) df_desired_result = df.set_index('condition')-df_0.set_index('condition').reindex(df.condition,fill_value=0) print(df_desired_result)  

Комментарии:

1. Что делать, если бы было больше столбцов условий, давайте назовем их условия1 и условие2, которые оба должны иметь одинаковое значение соответственно. для выполнения вычитания, например, вычтите значения, если условие1 == условие1_0 и условие2 == условие2_0? С уважением! Люси

2. вы можете сделать df.set_index([‘условие1′,’условие2’])