как исключить значения из датафрейма по условию наличия в словаре?

есть датафрейм, который хранит в первой колонке различные значения, как исключить те значения, которых нет в ключах словарей, и оставить только соответствующие? пытался следующим образом, но он полностью чистит колонку, и она вся заполняется nan

s_df.loc[s_df[s_df.columns[0]] != t_dict.keys(), s_df.columns[0]] = np.nan

Пример:

s_df = pd.DataFrame({'A': [5, 5, 0, 9, 4],
                     'B': [np.nan, 7, 9, np.nan, 4],
                     'C': [np.nan, np.nan, 8, 9, 0],
                     'D': [7, 7, np.nan, 1, np.nan]
                     })

t_dict = {5: [], 4: []}

Ответы (2 шт):

Автор решения: strawdog
import pandas as pd

d = {"a":1,"c":2,"e":3,}
df = pd.DataFrame({0:["a","b","c","d","e"],1:[1,2,3,4,5]})
   0  1
0  a  1
1  b  2
2  c  3
3  d  4
4  e  5
res = df.loc[df[0].isin(d.keys())]

res:

   0  1
0  a  1
2  c  3
4  e  5
→ Ссылка
Автор решения: SergFSM

можно еще попробовать такой вариант:

s_df['A'] = s_df['A'].mask(s_df['A'].isin(t_dict))

>>> s_df
'''
     A    B    C    D
0  NaN  NaN  NaN  7.0
1  NaN  7.0  NaN  7.0
2  0.0  9.0  8.0  NaN
3  9.0  NaN  9.0  1.0
4  NaN  4.0  0.0  NaN
→ Ссылка