Numpyはstr
とobject
の型を区別しているようです。たとえば、私は:: DTYPE( 'S')とDTYPE( 'O')は、それぞれstr
とobject
に対応strとオブジェクトの型を区別するパンダ
>>> import pandas as pd
>>> import numpy as np
>>> np.dtype(str)
dtype('S')
>>> np.dtype(object)
dtype('O')
を行うことができます。
しかし、パンダにはその区別がありません。str
〜object
です。 ::
>>> df = pd.DataFrame({'a': np.arange(5)})
>>> df.a.dtype
dtype('int64')
>>> df.a.astype(str).dtype
dtype('O')
>>> df.a.astype(object).dtype
dtype('O')
強制的にタイプをdtype('S')
にすることは役に立ちません。 ::
>>> df.a.astype(np.dtype(str)).dtype
dtype('O')
>>> df.a.astype(np.dtype('S')).dtype
dtype('O')
この動作の説明はありますか?
完全な答えではない簡単な説明: 'numpy'に文字列dtypeを使用すると、それは基本的に固定幅のCのような文字列です。 'pandas'では、それらは"普通の "Python文字列なので、オブジェクト型です。 –
これはあなたの質問に対処するかもしれません - http://stackoverflow.com/questions/21018654/strings-in-a-dataframe-but-dtype-is-object-基本的にオブジェクトndarrayを格納し、ndarrayの文字列は格納しません。しかし、私は、 'str'と 'mixed'カラムを 'O'として区別して区別するなど、タイプを区別するのがより明確になる可能性があることを支持しています。 – Sereger