У меня есть фрейм данных с формой (42538, 145), в котором есть более 50 столбцов, которые имеют значения NaN для всех строк.
(42538, 145)
NaN
Я бы хотелотбросить эти столбцы без указания каждого имени столбца в df.drop.
df.drop
Вы можете использовать pd.DataFrame.dropna сверх axis=1:
pd.DataFrame.dropna
axis=1
df = pd.DataFrame({'A': [1, 2, 3], 'B': [np.nan]*3, 'C': [4, 5, 6], 'D': [np.nan]*3}) df_new = df.dropna(axis=1) print(df_new) A C 0 1 4 1 2 5 2 3 6
Возможно, вы захотите начать с df.notnull, чтобы получить местоположения всех не-NaN.
df.notnull
Затем вы можете использовать df.any нарезультат, с axis установленным в ноль, чтобы проверить все столбцы на not-all-NaNness.
df.any
axis
Полученные логические ряды могут использоваться для индексации ваших столбцов: Pandas Выбор столбцов DataFrame с использованием логического значения .Есть несколько вариантов:
df = df.iloc[:, df.notnull().any(axis=0).values]
sel = df.notnull().any(axis=0) df = df[sel.index[sel]]