Irohabook
0
4170

pandasのDataFrameで特定の列だけ浮動小数点数から整数に変える:.astype(int)を使う

pandas の read_csv で csv ファイルのデータを読みこむと、場合によって数値が浮動小数点数と扱われる。これを整数にするには

df['人口'] = df['人口'].astype(int)

とする。ポイントは .astype(int) であり、整数にしたいカラムにこれを指定するだけで解決する。

もっとくわしく

日本の自治体別の人口表がある。

人口.csv

"東京都","千代田区","61,269"
"東京都","中央区","156,823"
"東京都","港区","253,639"
"東京都","新宿区","342,297"
"東京都","文京区","217,419"
"東京都","台東区","196,134"
"東京都","墨田区","268,898"
"東京都","江東区","513,197"
"東京都","品川区","387,622"
"東京都","目黒区","276,786"

今回はこのファイルを使う。まずは pandas の read_csv で開き、加工して別の csv ファイルに書きこむ。

import pandas as pd

df = pd.read_csv('人口.csv', quoting=csv.QUOTE_NONNUMERIC, quotechar='"', thousands=',')
df.to_csv('ランキング.csv', index=False)

この記事を読んでいるベテラン Python 使いにとってあまりに退屈なコードだろう。これは

東京都,東京23区合計,9396597.0
神奈川県,横浜,3737845.0
大阪府,大阪市,2702432.0
愛知県,名古屋,2288240.0
北海道,札幌市合計,1952348.0
兵庫県,神戸,1542935.0
福岡県,福岡市,1529040.0
神奈川県,川崎市,1488031.0

と出力する。カンマはついておらず、代わりに小数点がついている。これでは人口のデータとして不適切だ。値を小数から整数にしないといけない。そのために

import pandas as pd

df = pd.read_csv('人口.csv', quoting=csv.QUOTE_NONNUMERIC, quotechar='"', thousands=',')
df['人口'] = df['人口'].astype(int)
df.to_csv('ランキング.csv', index=False)

とする。人口の列だけ、データ・タイプを整数にする。

次の記事

pandas