Это точно , что вы должны ожидать при условии all
.Рассмотрим этот минимальный пример:
df = pd.DataFrame([[1, 2, np.inf],
[4, np.inf, 6]])
res1 = df[df.iloc[:, :2].applymap(np.isfinite).all(1)] # test first 2 columns only
res2 = df[df.applymap(np.isfinite).all(1)] # test all columns
print(len(res1.index)) # 1
print(len(res2.index)) # 0
df.iloc[:, :2]
фильтры только для первых 2 столбцов и, очевидно, первая строка будет сохранена.В то время как во втором случае обе строки исключаются, поскольку рассматриваются все столбцы.
Кстати, np.isfinite(df).all(1)
более идиоматичен в этом случае: вам не нужно применятьоперация для каждого значения индивидуально через applymap
.