Рассматривать
np.random.seed(0)
s1 = pd.Series([1, 2, 'a', 'b', [1, 2, 3]])
s2 = np.random.randn(len(s1))
s3 = np.random.choice(list('abcd'), len(s1))
df = pd.DataFrame({'A': s1, 'B': s2, 'C': s3})
df
A B C
0 1 1.764052 a
1 2 0.400157 d
2 a 0.978738 c
3 b 2.240893 a
4 [1, 2, 3] 1.867558 a
Столбец "А" имеет смешанные типы данных. Я хотел бы придумать действительно быстрый способ определить это. Это было бы не так просто, как проверка type == object
, потому что это идентифицировало бы "С" как ложное срабатывание.
Я могу думать об этом с
df.applymap(type).nunique() > 1
A True
B False
C False
dtype: bool
Но вызов type
поверх applymap
выполняется довольно медленно. Особенно для больших кадров.
%timeit df.applymap(type).nunique() > 1
3.95 ms ± 88 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Можем ли мы сделать лучше (возможно, с NumPy)? Я могу принять "Нет", если ваш аргумент достаточно убедителен. :-)