Если вы хотите немного сжать столбец 2, чтобы значения NaN
сверху исчезли (или переместились вниз), вы можете сделать это следующим образом:
import numpy as np
non_na_values= df['2'].dropna().to_list()
df['2']= np.NaN
df.iloc[:len(non_na_values) , df.columns.get_loc('2')]= non_na_values
Я знаю, этоэто очень нетрадиционный способ сделать это, но проблема такого рода также очень необычна, потому что обычно значения столбцов в строке так или иначе связаны, и поэтому в большинстве случаев такая операция не имеет смысла. Вероятно, это также является причиной того, почему нет более элегантного решения, чтобы решить что-то подобное. Полагаю, вы подумали о сортировке данных.
Примечание. Может быть, вам придется удалить дефисы вокруг этих двух (зависит от того, какой тип имени столбца на самом деле.