我有以下季度数据。但是有些日期没有数据。我想创建一个 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
在读取文件时将其置于循环中应该是微不足道的。
添加回答
举报
0/150
提交
取消