У меня есть такой фрейм данных:
import numpy as np
import pandas as pd
df = pd.DataFrame({'a': range(4), 'b': range(2, 6)})
a b
0 0 2
1 1 3
2 2 4
3 3 5
и у меня есть функция, которая возвращает несколько значений. Здесь я просто использую фиктивную функцию , которая возвращает минимум и максимум для определенного итерируемого ввода:
def return_min_max(x):
return (np.min(x), np.max(x))
Теперь я хочу, например, добавьте максимум каждого столбца к каждому значению в соответствующем столбце.
Итак
df.apply(return_min_max)
дает
a (0, 3)
b (2, 5)
, а затем
df.add(df.apply(return_min_max).apply(lambda x: x[1]))
дает желаемый результат
a b
0 3 7
1 4 8
2 5 9
3 6 10
Мне интересно, есть ли более простой способ избежать двух цепочек apply
.
Просто чтобы убедиться:
Я НЕ заинтересован в
df.add(df.max())
решение типа. Я выделил dummy_function
, чтобы проиллюстрировать, что это не моя действительная функция, а просто минимальная примерная функция, имеющая несколько выходов.