考虑
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
列“A”具有混合数据类型。我想想出一个非常快速的方法来确定这一点。它不会像检查是否那样简单type == object,因为这会将“C”识别为误报。
我可以想到这样做
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)?如果你的论点足够有说服力,我可以接受“不”。:-)
Qyouu
波斯汪
相关分类