现象:
Numpy区分了str和object类型,其中dtype(‘S’)和dtype(‘O’)分别对应于str和object.
然而,pandas缺乏这种区别 str和object类型都对应dtype(‘O’)类型,即使强制类型为dtype(‘S’)也无济于事
>>> importpandas as pd>>> importnumpy as np>>>
>>>
>>>np.dtype(str)
dtype(‘S‘)>>>np.dtype(object)>>>
>>>dtype(‘O‘)>>> df = pd.DataFrame({‘a‘: np.arange(5)})>>>df
a
0 01 1
2 2
3 3
4 4
>>>df.a.dtype
dtype(‘int64‘)>>>df.a.astype(str).dtype
dtype(‘O‘)>>>df.a.astype(object).dtype
dtype(‘O‘)>>>df.a.astype(str).dtype
dtype(‘O‘)
原理:
先说结论:
Numpy的字符串dtypes不是python字符串.pandas使用python字符串,.
numpy与pandas的字符串不同的含义:
>>> x = np.array([‘Testing‘, ‘a‘, ‘string‘], dt