質問: pandas初心者です。 Excelファイルから新たにファイルをtsv化して生成するコードを作成しました。 データとしては、以下のようなかんじです。 | | | | xx | | xx | | | --- | --- | --- | --- | --- | --- | --- | | No. | 列1 | 列2 | 列3 | 列4 | 列5 | 列6 | | 1 | aaaa | bbbb | cccc | dddd | eeee | ffff | | 2 | aaaa | bbbb | cccc | dddd | eeee | ffff | | 3 | aaaa | bbbb | cccc | dddd | eeee | ffff | | 4 | aaaa | bbbb | cccc | dddd | eeee | ffff | これをDataFrame化したときに、**No.**の部分が、`1.0`とか2行目なら`2.0`という風に小数点含んで作成されています。 小数点切り捨て(int64)整数にしたいので、カラムの確認をしました。 ``` df_sheet.dtypes ``` そうすると**No.**のカラムだけ何も型がふられていないことに気づきました。 これはなぜなのでしょうか?? また、型(int)を振るにはどうしたらよいでしょうか? ご教示の方どうぞよろしくお願い致します。。。 追記: 判明したのが、`print(df.index)`すると以下がでます。 ``` Float64Index([ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, ... 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, nan], dtype='float64', length=3710) ``` なので、単純に`df,index`の型を変更できればいいかと思いますが、方法がわかりません...
回答: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html めまいがするほど引数がたくさんありますが... 以下の2つを適切にすると行けそうです。 > > dtype : Type name or dict of column -> type, default None > > Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} Use str or object to preserve and not interpret dtype. If converters are specified, they will be applied INSTEAD of dtype conversion. > > > index_col : int or sequence or False, default None > > Column to use as the row labels of the DataFrame. If a sequence is given, a MultiIndex is used. If you have a malformed file with delimiters at the end of each line, you might consider index_col=False to force pandas to _not_ use the first column as the index (row names) > > >