как исключить значения из датафрейма по условию наличия в словаре?
есть датафрейм, который хранит в первой колонке различные значения, как исключить те значения, которых нет в ключах словарей, и оставить только соответствующие? пытался следующим образом, но он полностью чистит колонку, и она вся заполняется 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