Для цикла выбора диапазона дат с требованием соответствия определенным критериям - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть следующие квартальные данные. Но есть некоторые даты, когда нет данных. Я хочу создать цикл for, который выполняет итерации по индексам и проверяет, что если в столбце активов дата равна NaN. Если да, то создайте новый фрейм данных, содержащий часть фрейма данных, где нет NaN и разрывы цикла.

Так, например, цикл запускается, между 30.09.2008 и 30.09.2016 все в порядке, затем на следующей итерации будет NaN (30.06.2016), поэтому я хочу создать фрейм данных содержащие строки между 30.09.2008 и 30.09.2016 и разрывы цикла.

Примечание: это должно быть с какой-то итерацией, потому что я хочу сделать это со многими исключениями, а для некоторых - точной датой, когда пики 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

1 Ответ

0 голосов
/ 02 апреля 2019

Вы можете использовать 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 

Поместить это в цикл при чтении ваших файлов должно быть тривиально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...