熊猫选择索引时间为第一行,索引> = X,然后第二行,索引> = 2X

时间:2020-10-07 19:25:38

标签: pandas dataframe select row

我已经解决了一个数学方程,并生成了一个以时间为索引的帧,时间值为t = np.linspace(0,15,100),因此在15小时内有100个时间点。现在我想选择2个小时该框架的值。在我的情况下,该值为2.12,然后为4.09,之后为6.06,依此类推。是否可以选择例如index = time大于或等于2的第一行,即2.12,然后下一行是time> = 4的第一值,即4.09,依此类推?

2 个答案:

答案 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")

这给了我这个数据框

original dataframe

所以现在我只想从中获取值 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]中”

在求解方程式后,我如何仅选择从熊猫框架中搜索到的时间点上的行。 很抱歉,如果问题看起来很简单,我是一般的编程专家。