首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫有条件地增加了一个插值函数作为一个新列

熊猫有条件地增加了一个插值函数作为一个新列
EN

Stack Overflow用户
提问于 2022-01-08 04:29:45
回答 1查看 37关注 0票数 1

我创建了一系列5 scipy 三次样条 (内插器类型)对象,如下所示:

代码语言:javascript
复制
from scipy.interpolate import CubicSpline
def spline3(df, col1, col2):
    x, y = df[col1].values, df[col2].values
    cs = CubicSpline(x, y, bc_type='natural')
    return cs
# indexed series of spline obj
splines = avg_df.groupby('group').apply(spline3, 'tenor', 'mid')

其结果是:

代码语言:javascript
复制
    splines
    Out[129]: 
    group
    A     <scipy.interpolate._cubic.CubicSpline object a...
    B    <scipy.interpolate._cubic.CubicSpline object a...
    C    <scipy.interpolate._cubic.CubicSpline object a...
    D    <scipy.interpolate._cubic.CubicSpline object a...
    E    <scipy.interpolate._cubic.CubicSpline object a...
    dtype: object

也就是说,它们将为相同的输入x产生不同的插值,如下所示。如何将此最小数据集作为新列使用:

代码语言:javascript
复制
toy = pd.DataFrame({
    'group': ['A', 'A', 'E'],
    'months': [11.04, 11.89, 7.51]
    })

toy
Out[132]: 
  group  months
0     A   11.04
1     A   11.89
2     E    7.51

类似于toy['interpolated'] = splines[toy['MMD'](toy['months']的内容如下所示:

代码语言:javascript
复制
splines['A'](7)
Out[135]: array(0.90897722)

splines['E'](7)
Out[136]: array(1.74683114)

我想到了apply\ pipe或者np.select,但周五晚些时候我就逃不掉了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-08 05:01:17

我认为您可以将.applylambda row: func(row)一起使用,其中func(row)采用splines[row['group']](row['month'])形式

代码语言:javascript
复制
toy['spline_x'] = toy.apply(lambda row: splines[row['group']](row['month'), axis=1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70629608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档