如何制作包含方程式的函数并将其应用于不同的数据帧



我有这样的数据

import pandas as pd
df2 = pd.DataFrame(np.random.rand(5,4), columns = list("ABCD"))

有我在此数据中应用的方程式:

df["Vchd_D"] = df["A"].diff(1)*0.1
df["Vch_D"] = df["B"].diff(1)*0.20
df["Vecs_D"] = df["C"].diff(1)*0.50

例如,如果我有另一个具有不同值和名称的数据帧

Data = pd.DataFrame(np.random.rand(5,4), columns = list("ABCD"))
DataWI = pd.DataFrame(np.random.rand(5,4), columns = list("ABCD"))
fex = pd.DataFrame(np.random.rand(5,4), columns = list("ABCD"))

如何在其他数据帧中自动应用我的公式?

您可以首先创建一个函数,其中以字符串格式定义所有公式,我们使用DataFrame.eval来执行这些公式。然后我们将这些公式应用于我们的数据帧:

def apply_formulas(df):
    func1 = 'A.diff(1)*0.1'
    func2 = 'B.diff(1)*0.2'  
    func3 = 'C.diff(1)*0.5'
    df["Vchd_D"] = df.eval(func1)
    df["Vch_D"] = df.eval(func2)
    df["Vecs_D"] = df.eval(func3)
    return df
dfs = [Data, DataWI, fex]
for df in dfs:
    df = apply_formulas(df)

例如,如果我们打印Data数据帧:

print(data)
          A         B         C         D    Vchd_D     Vch_D    Vecs_D
0  0.569892  0.799825  0.441034  0.858675       NaN       NaN       NaN
1  0.681410  0.937648  0.457076  0.612711  0.011152  0.027565  0.008021
2  0.848778  0.491082  0.614710  0.049382  0.016737 -0.089313  0.078817
3  0.067191  0.936427  0.264359  0.710680 -0.078159  0.089069 -0.175176
4  0.377954  0.708957  0.368314  0.797688  0.031076 -0.045494  0.051978

最新更新