2016-11-28 121 views
0

我有一个熊猫数据帧的结束,如下面的蟒蛇大熊猫 - 得到一个给定的行min函数的数据帧

      low MFE_pr    MFE_ts MAE_pr 
exit_time               
2000-02-01 01:00:00 1400.25 1400.25 2000-02-01 01:00:00  NaN 
2000-02-01 01:30:00 1399.50 1399.50 2000-02-01 01:30:00  NaN 
2000-02-01 02:00:00 1399.75 1399.50 2000-02-01 01:30:00  NaN 
2000-02-01 02:30:00 1399.25 1399.25 2000-02-01 02:30:00  NaN 
2000-02-01 03:00:00 1399.50 1399.25 2000-02-01 02:30:00  NaN 
2000-02-01 03:30:00 1398.25 1398.25 2000-02-01 03:30:00  NaN 
2000-02-01 04:00:00 1398.25 1398.25 2000-02-01 03:30:00  NaN 
2000-02-01 04:30:00 1399.00 1398.25 2000-02-01 03:30:00  NaN 
2000-02-01 05:00:00 1399.25 1398.25 2000-02-01 03:30:00  NaN 
2000-02-01 05:30:00 1399.50 1398.25 2000-02-01 03:30:00  NaN 

我要填充与最小功能MAE_pr列的方式类似于以下:

trade ['MAE_pr'] = trade.low.min() 

然而,我不想每行的分钟以上的整个列进行计算,但用于以MFE_ts mentionned表中的最后的时间标记,从低值的每一行。

我该如何选择这样一个子集来执行min?

例如,对于最后一行分钟将被计算在“低”列的值从时间戳3:30表

+0

是否要选择特定的时间段,然后将'cummin()'应用于所选期间? – estebanpdl

+0

是的,例如最后一行康明将从时间戳3:30到表末尾的“低”列的值计算 –

+0

康明姆返回一个向量,但您只有一个标量单元格以填充每个结果。因此,在3:30开始的所有康明矢量值中,您选择填入MFE_pr的值是多少? – Boud

回答

0

cummin的想法其实是一个很好的起点,以最终获得一个矢量化算法。要弄清楚的是,你实际上是在寻找一个反向cummin:从给定的点到最后是一个cummin,如果你的数据帧倒过来。所以让我们来做。排序数据帧下降和计算芹菜对低柱:

df['rcummin'] = df.sort_index(ascending=False).low.cummin() 

rcummin现在包含您正在寻找的累积最小。您现在可以获取适当的值以获取每个MFE_ts日期时间的相应最小值。你已经索引数据框以时间顺序日期时间:做这样的正确的事情很容易:

df.MAE_pr = df.loc[df.MFE_ts].rcummin 
df.MAE_pr 

exit_time 
2000-02-01 01:00:00 1398.25 
2000-02-01 01:30:00 1398.25 
2000-02-01 01:30:00 1398.25 
2000-02-01 02:30:00 1398.25 
2000-02-01 02:30:00 1398.25 
2000-02-01 03:30:00 1398.25 
2000-02-01 03:30:00 1398.25 
2000-02-01 03:30:00 1398.25 
2000-02-01 03:30:00 1398.25 
2000-02-01 03:30:00 1398.25 
Name: rcummin, dtype: float64 

您的数据例如是不冷静,以可视化的结果,而是说你有一个日期时间在4:30和你结果该行将获得1399.00。