Как применить функцию z_ij = f(x_ij, y_ij)
из DataFrame X
и Y
того же размера и сохранить результат в DataFrame Z
?Применить функцию поэлементно двух DataFrames
0
A
ответ
1
Это зависит от того, какие функции у вас есть, много функций, уже векторизации для кадра данных, таких как +-*/
и т.д., поэтому для выполнения этих функций, вы можете просто сделать Z = X + Y
или Z = X - Y
и т.д.
Для более общую функцию, вы можете использовать numpy.vectorize
, чтобы сделать ее векторизованную версию, а затем применить к двум фреймам данных:
import numpy as np
import pandas as pd
X = pd.DataFrame([[1,2], [3,4]])
Y = pd.DataFrame([[2,1], [3,3]])
def f(x, y): # this is a demo function that takes in two ints and
return str(x) + str(y) # concatenate them as str
vecF = np.vectorize(f) # vectorize the function with numpy.vectorize
X
# 0 1
#0 1 2
#1 3 4
Y
# 0 1
#0 2 1
#1 3 3
pd.DataFrame(vecF(X, Y)) # apply the function to two data frames
# 0 1
#0 12 21
#1 33 43