pandas заполнить в подмножестве строк - PullRequest
0 голосов
/ 11 января 2020

У меня есть df следующим образом:

   a    b
0  1  NaN
1  2  NaN
2  1  1.0
3  4  NaN
4  9  1.0
5  6  NaN
6  5  2.0
7  8  NaN
8  9  2.0

Я бы хотел заполнить только наны между числами, чтобы получить df следующим образом:

   a    b
0  1  NaN
1  2  NaN
2  1  1.0
3  4  1.0
4  9  1.0
5  6  NaN
6  5  2.0
7  8  2.0
8  9  2.0

, а затем создать два новых кадра данных :

   a    b
2  1  1.0
3  4  1.0
4  9  1.0
   a    b
6  5  2.0
7  8  2.0
8  9  2.0

означает, что нужно выбрать все столбцы и строки только с указанным Nan.

Моя идея для первой части, с заполнением Nan, - создать отдельный фрейм данных с индексами строк. как:

2 1.0
4 1.0
6 2.0
8 2.0

и на основе этого создать диапазон индексов строк для заполнения.

Мой вопрос, возможно, есть, связано с этой частью с заменой nan, больше pythoni c функция для этого.

1 Ответ

2 голосов
/ 11 января 2020

Как насчет

df[df.b.ffill()==df.b.bfill()].ffill()

приводит к

#    a    b
# 2  1  1.0
# 3  4  1.0
# 4  9  1.0
# 6  5  2.0
# 7  8  2.0
# 8  9  2.0

Объяснение:

df['c'] = df.b.ffill()
df['d'] = df.b.bfill()

#    a    b    c    d
# 0  1  NaN  NaN  1.0
# 1  2  NaN  NaN  1.0
# 2  1  1.0  1.0  1.0
# 3  4  NaN  1.0  1.0
# 4  9  1.0  1.0  1.0
# 5  6  NaN  1.0  2.0
# 6  5  2.0  2.0  2.0
# 7  8  NaN  2.0  2.0
# 8  9  2.0  2.0  2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...