Допустим, у меня есть серия
a = pd.Series([(1,2), (3,4), (float('NaN'),float('NaN'))])
Как удалить (нан, нан) из серии?
С уважением,
Предполагая, что вы хотите сохранить только пары, не содержащие значений NaN, вы можете сделать:
a = a[~ a.apply(lambda x: np.isnan(x[0] or np.isnan(x[1])))]
Много хороших ответов, но вы также можете попробовать это:
pd.Series([(x,y) for (x,y) in a if ~np.isnan(x) and ~np.isnan(y)])
Вы можете попробовать это:
a = pd.Series([(1,2), (3,4), (float('NaN'),float('NaN'))]) def func(t): if not pd.isna(t[0]) and not pd.isna(t[1]): return True else: return False a = a[a.apply(func)] print(a)
Вывод:
0 (1, 2) 1 (3, 4) dtype: object
Если вы хотите через pandas, сначала отфильтруйте разобранный фрейм данных
df[['x', 'y']] = pd.DataFrame(a.tolist(), index=a.index) df.dropna(how='all', inplace=True)
, затем вернитесь к списку кортежей
new_tuples = [tuple(x) for x in df.to_numpy()]