我有这样的数据
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