将一个函数以元素方式应用于两个DataFrames[英] Apply a function element-wise to two DataFrames

本文是小编为大家收集整理的关于将一个函数以元素方式应用于两个DataFrames的处理方法,想解了将一个函数以元素方式应用于两个DataFrames的问题怎么解决?将一个函数以元素方式应用于两个DataFrames问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

如何从 DataFrame X 和 Y 中应用相同大小的函数 z_ij = f(x_ij, y_ij) 并将结果保存到 DataFrame Z 中?

推荐答案

看你是什么函数,很多函数都已经向量化了数据框,比如+-*/等,所以对于这些函数, 你可以简单地做 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

本文地址:https://www.itbaoku.cn/post/1728112.html