如何通过每个单元格/元素将函数f应用于df1和df2?
df1 = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3]], columns=['a','b','c'])
df2 = pd.DataFrame([[10,10,10],[20,20,20],[30,30,30]], columns=['a','b','c'])
def f(a,b):return(a+b+1)
答案 0 :(得分:1)
您可以np.vectorize
[numpy-doc]函数f
:
from numpy import vectorize
fvec = vectorize(f)
df3 = pd.DataFrame(fvec(df1, df2), columns=df1.columns, index=df1.index)
但是重要的是,在进行矢量化之前,列和索引必须相同(并且顺序相同),因为numpy会丢弃此元数据。
因此,我们使用结果构建一个numpy数组,并通过从两个数据帧之一中获取索引和列来“ 重建”。但是,这两个数据帧可能首先需要进行一些预处理。
向量化可能会发生任意个数据帧(因此,您可以定义一个函数f
,例如,需要三个元素逐个应用于三个数据帧),但注释相同如上所述:您首先需要确保数据框的列和索引匹配。