Метод isnumeric
Метод isnumeric применяется к текстовым данным серии через аксессор str и проверяет, содержат ли строки только числовые символы. Метод возвращает серию булевых значений, где ⁅b⁆True⁅/b⁆ означает, что строка полностью состоит из числовых символов, а ⁅b⁆False⁅/b⁆ - в противном случае. К числовым символам относятся не только цифры 0-9, но и другие символы Юникода, обозначающие числа, например, римские цифры или дробные символы.
Метод не принимает никаких параметров и возвращает серию типа bool. Важно отметить, что пустая строка или строка с пробелами вернут ⁅b⁆False⁅/b⁆.
Синтаксис
ser.str.isnumeric()
Пример
Проверим, какие строки в серии состоят только из числовых символов:
import pandas as pd
ser = pd.Series(['123', 'abc', '456', '12a', '789'])
res = ser.str.isnumeric()
print(res)
Результат выполнения кода:
0 True
1 False
2 True
3 False
4 True
dtype: bool
Пример
Рассмотрим работу метода с числами в разных системах счисления и специальными символами:
import pandas as pd
ser = pd.Series(['123', '½', 'Ⅲ', '1.5', '1,5'])
res = ser.str.isnumeric()
print(res)
Результат выполнения кода:
Как видно из примера, дробные символы (½) и римские цифры (Ⅲ) считаются числовыми, а десятичные дроби с точкой или запятой - нет.
Пример
Используем метод isnumeric для фильтрации серии. Оставим только строки, состоящие из числовых символов:
import pandas as pd
ser = pd.Series(['123', 'abc', '456', '12a', '789', ''])
mask = ser.str.isnumeric()
res = ser[mask]
print(res)
Результат выполнения кода:
0 123
2 456
4 789
dtype: object
Обратите внимание, что пустая строка также отфильтровалась, так как метод вернул для неё ⁅b⁆False⁅/b⁆.
Пример
Применим метод isnumeric к столбцу таблицы DataFrame:
import pandas as pd
df = pd.DataFrame({
'a': ['123', '456', 'abc', '789'],
'b': [1, 2, 3, 4]
})
res = df['a'].str.isnumeric()
print(res)
Результат выполнения кода:
0 True
1 True
2 False
3 True
Name: a, dtype: bool