У меня есть pandas dataframe df
, где я хочу проверить типы данных
import pandas as pd
import numpy as np
df
>>> a1 a2 a3 a4
0 5 10.08 22.9 50.45
1 25 13.80 43.0 NaN
2 2 8.30 15.0 17.00
print(df.dtypes)
>>>
a1 int64
a2 float64
a3 float64
a4 float64
dtype: object
У меня есть функция, которая проверяет типы данных, а именно, является ли значение скалярным или нет
def isScalar(a):
if isinstance(a, (int, float, np.int64, np.float64)):
return True
else:
return False
Теперь, если я наберу
df.applymap(isScalar)
>>> a1 a2 a3 a3
0 False True True True
1 False True True True
2 False True True True
, мы увидим, что столбец a1
полностью ложный, что противоречит, если я запускаю отдельные значения через isScalar()
print(type(df.a1[1]))
>>> numpy.int64
print(isScalar(df.a1[1]))
>>> True
Что здесь происходит?Значения a1
, возвращаемые df.applymap(isScalar)
, должны иметь значение True.