考虑
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
但是在 applymap
上调用 type
会相当缓慢,特别是对于较大的框架。
%timeit df.applymap(type).nunique() > 1
3.95 ms ± 88 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
我们可以做得更好(也许使用NumPy)吗?如果你的论点足够有说服力,我可以接受“不行”。:-)
我们是否能够用更好的方式来完成某件事情(或许利用NumPy)?如果你的理由足够有说服力,那么我能接受“不行”的回答。:-)