めっちゃハマった
pandas.DataFrameは列ごとに型dtypeが設定される。 astype()なんかでキャストできたりもする。
df_object = pd.read_csv('hoge.csv',index_col=0, dtype=object) print(df_object) # a b c d # 1 001 100 x # 2 020 NaN y # 3 300 300 z print(df_object.dtypes) # a object # b object # c object # d object # dtype: object print(df_object.applymap(type)) # a b c d # 1 <class 'str'> <class 'str'> <class 'str'> <class 'str'> # 2 <class 'str'> <class 'str'> <class 'float'> <class 'str'> # 3 <class 'str'> <class 'str'> <class 'str'> <class 'str'>
この際にキャスト不可能なtypeを指定してしまうとValueErrorとなる。 書式やら相互変換の話は下記がとても参考になりました。