В пандах есть infer_dtype()
, которые могут быть здесь полезны.
Написано на Cython ( кодовая ссылка ), возвращает строку, суммирующую значения впереданный объект.Он часто используется во внутренних органах панд, поэтому мы можем разумно ожидать, что он был разработан с учетом эффективности.
>>> from pandas.api.types import infer_dtype
Теперь столбец A представляет собой смесь целых чисел и некоторых других типов:
>>> infer_dtype(df.A)
'mixed-integer'
Все значения столбца B имеют плавающий тип:
>>> infer_dtype(df.B)
'floating'
Столбец C содержит строки:
>>> infer_dtype(df.B)
'string'
Общий тип "catchall" для смешанных значений просто "смешанный"":
>>> infer_dtype(['a string', pd.Timedelta(10)])
'mixed'
Сочетание чисел с плавающей точкой и целых чисел это '' mixed-integer-float '':
>>> infer_dtype([3.141, 99])
'mixed-integer-float'
Чтобы сделать функцию, которую вы описываете в своем вопросе, один подход можетбыть для создания функции, которая ловит соответствующие смешанные случаи:
def is_mixed(col):
return infer_dtype(col) in ['mixed', 'mixed-integer']
Тогда у вас есть:
>>> df.apply(is_mixed)
A True
B False
C False
dtype: bool