#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’])