Как оставить только значения int64 в Series Pandas

Есть ряд элементов:

s = pd.Series([1, 'halva', 1.10, -20])

Как оставить только целочисленные значения?

Нашел вот такую команду, но она для датафреймов: df.select_dtypes(include=int64)


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

Автор решения: hedgehogues

Очевидно, как:

import pandas as pd
import numpy as np

s = pd.Series([np.int64(1), 'halva', 1.10, -20])
df = pd.DataFrame(s)
df[df[0].apply(lambda el: type(el) == np.int64)]

Но следует быть внимательынм с типами, как сказал @MaxU

→ Ссылка
Автор решения: MaxU

Попробуйтк так:

In [24]: res = s[s.map(lambda x: isinstance(x, (int, np.integer)))]

результат:

In [25]: res
Out[25]:
0      1
3    -20
dtype: object

PS в функцию isinstance(var, type) в качестве второго параметра можно передавать кортеж с типами данными - тогда переменная будет проверяться последовательно на переданные в кортеж типы данных.

Пример:

res = s[s.map(lambda x: isinstance(x, (int, np.int32, int64)))]
→ Ссылка