Использование функции fillna
:
df.fillna(axis=1, method='backfill')
будет выполняться, если в других столбцах нет NaN. Если есть и вы хотите оставить их нетронутыми, я думаю, что единственным вариантом в этом случае является выполнение fillna
в подмножестве вашего фрейма данных. С примером dataframe:
In [45]: df
Out[45]:
A B C D E F
0 158 158 158 177 1 10
1 158 158 158 177 2 20
2 NaN NaN NaN 177 3 30
3 158 158 158 177 NaN 40
4 NaN NaN NaN 177 5 50
In [48]: df[['A', 'B', 'C', 'D']] = df[['A', 'B', 'C', 'D']].fillna(axis=1, method='backfill')
In [49]: df
Out[49]:
A B C D E F
0 158 158 158 177 1 10
1 158 158 158 177 2 20
2 177 177 177 177 3 30
3 158 158 158 177 NaN 40
4 177 177 177 177 5 50
Udate: Если вы не хотите зависеть от порядка столбцов, вы также можете указать значения для использования для каждой строки (например, .fillna(value=df['D']
). Единственная проблема заключается в том, что это работает только для Series (когда это фреймворк данных, он пытается сопоставить различные значения для заполнения в разных столбцах, а не в строках). Поэтому, применив его для столбца по столбцу, он работает:
In [60]: df[['A', 'B', 'C']].apply(lambda x: x.fillna(value=df['D']))
Out[60]:
A B C
0 158 158 158
1 158 158 158
2 177 177 177
3 158 158 158
4 177 177 177
ответом на этот конкретный вопрос было предоставление надлежащих разрешений (например, участник) группе ресурсов aks