我正在尝试将曲线拟合到散点图的边界.请参阅此图片以供参考.

我已经完成了以下(简化)代码的拟合.它将数据帧切成小的垂直条带,然后在宽度条带中找到最小值width,忽略nans.(该函数单调递减.)
def func(val):
""" returns some function of 'val'"""
return val * 2
for i in range(0, max_val, width)):
_df = df[(df.val > i) & (df.val < i + width)] # vertical slice
if np.isnan(np.min(func(_df.val)): # ignore nans
continue
xs.append(i + width)
ys.append(np.min(func(_df.val)))
Run Code Online (Sandbox Code Playgroud)
我正在适应scipy.optimize.curve_fit.我的问题是:有没有更自然或pythonic的方法来做到这一点 - 有什么方法可以提高准确性?(例如,通过给散点图的区域提供更高的权重和更高的点密度?)
我的问题是关于在pandas(python.)中进行选择.
如您所知,可以selection通过执行(或"切割")对数据帧应用
df = df[df.area > 10]
Run Code Online (Sandbox Code Playgroud)
如果你想(比如说)选择列值area大于的所有行10.但是假设你有许多数据帧,并且你最终希望将这个剪辑应用于所有数据帧.做一些像这样的事情会很好
cut = dataframe.area > 10
Run Code Online (Sandbox Code Playgroud)
然后以某种方式能够做到
df = df[cut]
Run Code Online (Sandbox Code Playgroud)
显然,鉴于上述策略,它将无效,因为它cut指的是特定的数据帧.但有没有办法来估计这种行为?
也就是说,是否可以定义一个cut特定的数据帧,并且可以应用为df = df[cut]?