大熊猫-列间条件的最优行选择

时间:2018-08-29 19:59:12

标签: python pandas

我有以下DataFrame:

            dataPoint   RIC ExpirationDate          Exchange Description  \
closingDate                                                                
2002-10-15       4207  SPH3     2003-03-20  CME:Index and Options Market   
2002-10-15       5400  SPH4     2004-03-18  CME:Index and Options Market   
2002-10-15      18661  SPM3     2003-06-19  CME:Index and Options Market   
2002-10-15      19918  SPM4     2004-06-17  CME:Index and Options Market   
2002-10-15      33439  SPU3     2003-09-18  CME:Index and Options Market   
2002-10-15      35523  SPU4     2004-09-16  CME:Index and Options Market   
2002-10-15      47733  SPZ2     2002-12-19  CME:Index and Options Market   
2002-10-15      49022  SPZ3     2003-12-18  CME:Index and Options Market 

我想用最接近我的闭合日期的ExpirationDate来抓取行(请注意,我有一个静态的closeDate存储在名为current_date的变量中)。

df.iterrows()是想到的一种解决方案,但效率似乎很低。有没有进行这种条件选择的最佳方法?

1 个答案:

答案 0 :(得分:1)

找到最小绝对差和索引的索引。

v = pd.to_datetime(df.reset_index()['ExpirationDate'])
idx = (v.mask(v < current_date) 
           - pd.to_datetime(current_date)).abs().idxmin()
row = df.iloc[idx, :]

我在这里看到一个问题:如果索引值不是唯一的,那么您将需要按位置而不是标签进行索引。因此,我添加了reset_index调用。