- Series :1つのデータ型 dtype を持つ
- DataFrame:各列ごとにデータ型 dtype を持つ
目次
型を確認する(df.dtypes)
# 各要素はそれぞれの型をもっていたとしても
# pandasでは文字列を含むSeriesやDataFrameの列は「object型」と表示される
s_object = pd.Series([0, 0.1, 'abc', np.nan])
s_object
# mapを使えば、各要素のtypeを表示可能
# NaNはfloat型になる
s_object.map(type)
# NaNはfloat型だが、strにキャストすると
s_str_astype = s_object.astype(str)
print(s_str_astype)
# NaN(大文字)も文字列 'nan'(小文字)になり
s_str_astype.map(type)
# dropna()でも除外されない
s_str_astype.dropna()
# キャストする前に欠損値の処理をするか
# replace()で'nan'を欠損値に置き換えて処理するか
s_str_astype_nan = s_str_astype.replace('nan', np.nan)
s_str_astype_nan
型を変換する
読み込み時(dtype)
一括変換
pd.read_csv(~, dtype=str)列ごとに変換
- 列名がない場合は、{4: str} でも可能 (列番号が4の場合、intを設定)
pd.read_csv(~, dtype={'A':float, 'B':str})読み込み後(astype)
注意:元のDataFrameは変更されない
一括変換
df.astype(str)列ごとに変換
df['列A'].astype(int) ← この場合、変換された列だけが戻ってくる
df.astype({'列A':int}) ← 戻り値をDFにしたい場合は、こちらを利用する# 複数の場合(dict)
df.astype({'A': float, 'C': int8})インデックスの型を変換したい
df.index.astype(int)