我已经解决了一个数学方程,并生成了一个以时间为索引的帧,时间值为t = np.linspace(0,15,100),因此在15小时内有100个时间点。现在我想选择2个小时该框架的值。在我的情况下,该值为2.12,然后为4.09,之后为6.06,依此类推。是否可以选择例如index = time大于或等于2的第一行,即2.12,然后下一行是time> = 4的第一值,即4.09,依此类推?
答案 0 :(得分:0)
您正在查看searchsorted
:
t[np.searchsorted(t,np.arange(0,15,2)]
出局:
array([ 0. , 2.12121212, 4.09090909, 6.06060606, 8.03030303,
10. , 12.12121212, 14.09090909])
答案 1 :(得分:0)
嘿,谢谢<3,它可以工作,但是您忘记了括号。位我如何选择它作为我的数据框的索引。我用solv_ivp做了一个微分方程求解器,为我提供了“ cx”,“ cs”,“ Vl”和索引时间列
t = np.linspace(0, 15, 100)
result = solve_ivp(model, [np.min(t), np.max(t)], y0, t_eval=t).y.T
pd.set_option('display.max_rows', 10)
pandaframe = pd.DataFrame(result, columns= ("ms", "mx", "Vl"), index = t)
pandaframe.index.name = ("time in h")
这给了我这个数据框
所以现在我只想从中获取值 t [np.searchsorted(t,np.arange(0,15,2)]
if i do something like this
f = t[np.searchsorted(t,np.arange(0,15,2))]
pdnew = pandaframe.loc[[f], [0,1,2]]
我收到密钥错误 KeyError:“ [Index([(((0.0,2.121212121212121,4.090909090909091,6.0606060606060606,8.030303030303031,10.0,12.121212121212121,14.090909090909092)]都不存在,dtype ='object',name ='h中的时间']]在[index]中”
在求解方程式后,我如何仅选择从熊猫框架中搜索到的时间点上的行。 很抱歉,如果问题看起来很简单,我是一般的编程专家。