Я пытаюсь заменить значения NaN в столбце pandas df ниже двумя отдельными значениями, то есть 8 и 12.


  |  ColumnD   |
  +------------+
  |    6       |
  |    NaN     |
  |    10      |
  |    NaN     |
  |    14      |

В настоящее время я могу добиться этого вручную, используя iloc фрейма данных, как показано ниже:

df.iloc[1:2, 0] = 8
df.iloc[3:4, 0] = 12

Есть ли способ заменить значения NaN (на 8 и 12), добавив 2 к предыдущему значению Нан, а не заменяя напрямую NaN на 8 и 12?

2
user3046211 24 Ноя 2021 в 15:43

1 ответ

Лучший ответ

Используйте np.where для условного заполнения

df['ColumnD']=np.where(df['ColumnD'].isna(),df['ColumnD'].fillna(method='ffill')+2, df['ColumnD'])

    ColumnD
0      6.0
1      8.0
2     10.0
3     12.0
4     14.0
1
wwnde 24 Ноя 2021 в 15:59