【问题标题】:Iterating optimization on a dataframe对数据框进行迭代优化
【发布时间】:2021-01-13 21:25:53
【问题描述】:

我正在尝试构建系列 x 和数据帧 y 的迭代插值。 Df yn 行和 m 列组成。我想为 DataFrame y 的每一行运行插值。

到目前为止,我已经能够使用iloc[0:]成功地为单行构建迭代

### SX5E
z=np.linspace(0.2,0.99,200)
z_pd_SX5E=pd.Series(z)
from scipy import interpolate
def f(z_pd_SX5E):
    x_SX5E=x
    y_SX5E=y.iloc[0,:]

    tck_SX5E = interpolate.splrep(x_SX5E, y_SX5E)
    return interpolate.splev(z_pd_SX5E, tck_SX5E)
Optimal_trigger_P_SX5E= z_pd_SX5E[f(z_pd_SX5E).argmax(axis=0)]

如何通过y 的每一行运行函数? 谢谢 非常感谢

【问题讨论】:

  • 您的代码中的xy 是什么?请提供minimal, reproducible example
  • 嗨 mikksu,x 是一系列 9 个值,y 是 9 列和 2470 个观察值的数据框。
  • 基本上,我想为 y 的每一行运行该函数。
  • x 0 0.19 1 0.29 2 0.39 3 0.49 4 0.59 5 0.69 6 0.79 7 0.89 8 0.99 数据类型:float64
  • 是的。 0 1 2 3 4 5 6 7 8日期2012-12-18 -0.000395 -0.000159 0.0092 0.000260 0.00010188 0.000049 -0.000027 0.000029 -00035 2012-12-19 -0.000394-0.000158 0.000092 0.000259 0.000188 0.0049 -0.000027 0.000029 -0.000027 0.000029 -00035 跨>

标签: python pandas dataframe loops optimization


【解决方案1】:

通常,您可以使用.apply 为每一行运行任何函数。所以像:

y.apply(lambda val: interpolate.splrep(x,val))

这将返回一个新的系列对象。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2016-12-25
    • 2016-07-07
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多