For 循环,用于选择满足特定条件的日期范围

我有以下季度数据。但是有些日期没有数据。我想创建一个 for 循环,它遍历索引并检查资产列中的日期是否为 NaN。如果是,则创建一个新的数据帧,其中包含数据帧中没有 NaN 且循环中断的部分。


例如,循环开始,在 9/30/2018 和 9/30/2016 之间一切正常,然后在下一次迭代中有 NaN (6/30/2016) 所以我想创建一个包含行的数据框在 2018 年 9 月 30 日和 2016 年 9 月 30 日之间,循环中断。


注意:它必须进行某种迭代,因为我想用许多 excel 来完成,对于某些 excel,NaN 开始的确切日期可能在不同的时间。


date           assets   debt

9/30/2018   4193    1824

6/30/2018   4281    1929

3/31/2018   4149    1460

12/31/2017  4238    1404

9/30/2017   3804    1401

6/30/2017   3583    1437

3/31/2017   3404    1451

12/31/2016  3181    1445

9/30/2016   3622    1478

6/30/2016   NaN NaN

3/31/2016   NaN NaN

12/31/2015  2566    225

9/30/2015   NaN NaN

6/30/2015   NaN     NaN

3/31/2015   NaN NaN

12/31/2014  2917    342

这是我尝试过的:


for date in df.index:

   if df['assets'][df.index == date].empty == True:

       newdf = df[df.index > date]

       break


慕仙森
浏览 159回答 1
1回答

喵喔喔

您可以使用该numpy方法isnan提取索引,然后索引以获取其余部分。idx = np.isnan(df.assets).idxmax() # this is one wayidx = df.assets.isna().idxmax() # this is another waynewdf = df.iloc[:idx]         date  assets    debt0   9/30/2018  4193.0  1824.01   6/30/2018  4281.0  1929.02   3/31/2018  4149.0  1460.03  12/31/2017  4238.0  1404.04   9/30/2017  3804.0  1401.05   6/30/2017  3583.0  1437.06   3/31/2017  3404.0  1451.07  12/31/2016  3181.0  1445.08   9/30/2016  3622.0  1478.0 在读取文件时将其置于循环中应该是微不足道的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python