Метод sub
Метод sub применяется к DataFrame
и выполняет поэлементное вычитание. Первым
параметром передаётся значение, Series или DataFrame
для вычитания. Дополнительно можно указать ось,
по которой выполняется операция, и уровень для
многоуровневых индексов.
Синтаксис
df.sub(other, axis='columns', level=None, fill_value=None)
Пример
Давайте вычтем число 10 из всех элементов таблицы:
import pandas as pd
df = pd.DataFrame({
'a': [5, 10, 15, 20, 25],
'b': [6, 12, 18, 24, 30]
})
res = df.sub(10)
print(res)
Результат выполнения кода:
a b
0 -5 -4
1 0 2
2 5 8
3 10 14
4 15 20
Пример
Вычтем из таблицы другую таблицу с такими же размерами:
import pandas as pd
df1 = pd.DataFrame({
'a': [10, 20, 30, 40, 50],
'b': [5, 15, 25, 35, 45]
})
df2 = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df1.sub(df2)
print(res)
Результат выполнения кода:
a b
0 9 -5
1 18 -5
2 27 -5
3 36 -5
4 45 -5
Пример
Вычтем Series из таблицы вдоль строк, используя параметр axis:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
ser = pd.Series([1, 2])
res = df.sub(ser, axis='columns')
print(res)
Результат выполнения кода:
a b
0 0 8
1 1 18
2 2 28
3 3 38
4 4 48
Пример
Используем параметр fill_value для замены пропущенных значений:
import pandas as pd
df1 = pd.DataFrame({
'a': [10, 20, None, 40],
'b': [5, 15, 25, 35]
})
df2 = pd.DataFrame({
'a': [1, 2, 3, 4],
'b': [10, None, 30, 40]
})
res = df1.sub(df2, fill_value=0)
print(res)
Результат выполнения кода:
a b
0 9.0 -5.0
1 18.0 0.0
2 -3.0 -5.0
3 36.0 -5.0