2016-11-28 94 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。