我有以下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()是想到的一种解决方案,但效率似乎很低。有没有进行这种条件选择的最佳方法?
答案 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
调用。