为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2021-12-26 10:45:39
我有以下季度数据。但是有些日期没有数据。我想创建一个 for 循环,它遍历索引并检查资产列中的日期是否为 NaN。如果是,则创建一个新的数据帧,其中包含数据帧中没有 NaN 且循环中断的部分。例如,循环开始,在 9/30/2018 和 9/30/2016 之间一切正常,然后在下一次迭代中有 NaN (6/30/2016) 所以我想创建一个包含行的数据框在 2018 年 9 月 30 日和 2016 年 9 月 30 日之间,循环中断。注意:它必须进行某种迭代,因为我想用许多 excel 来完成,对于某些 excel,NaN 开始的确切日期可能在不同的时间。date           assets   debt9/30/2018   4193    18246/30/2018   4281    19293/31/2018   4149    146012/31/2017  4238    14049/30/2017   3804    14016/30/2017   3583    14373/31/2017   3404    145112/31/2016  3181    14459/30/2016   3622    14786/30/2016   NaN NaN3/31/2016   NaN NaN12/31/2015  2566    2259/30/2015   NaN NaN6/30/2015   NaN     NaN3/31/2015   NaN NaN12/31/2014  2917    342这是我尝试过的:for date in df.index:   if df['assets'][df.index == date].empty == True:       newdf = df[df.index > date]       break
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

您可以使用该numpy方法isnan提取索引,然后索引以获取其余部分。


idx = np.isnan(df.assets).idxmax() # this is one way


idx = df.assets.isna().idxmax() # this is another way


newdf = df.iloc[:idx]


         date  assets    debt

0   9/30/2018  4193.0  1824.0

1   6/30/2018  4281.0  1929.0

2   3/31/2018  4149.0  1460.0

3  12/31/2017  4238.0  1404.0

4   9/30/2017  3804.0  1401.0

5   6/30/2017  3583.0  1437.0

6   3/31/2017  3404.0  1451.0

7  12/31/2016  3181.0  1445.0

8   9/30/2016  3622.0  1478.0 

在读取文件时将其置于循环中应该是微不足道的。


查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信