python pandasの添字「[0:1]」と「iloc[0]」の違いについて
転職活動中ですが、相変わらずpythonのプログラム書いて遊んでます。さて今回は表題のことが気になったので試してみました。両方ともリスト(配列)の1レコード目を持ってくるという意味っぽいですが何が違うのでしょうか。サンプルのテストコードは以下のとおり。ちなみに完全に自分用のメモです。
import pandas.io.sql as psql #データベース「nikkei」の「nk225days」テーブルから日時順に並び替えて、「年月日、時刻、終値」のデータを取り出す。 conn = mysql.connector.connect(user='root', password='yashiro3', host='localhost', database='nikkei') sql = """SELECT date,time,start,end FROM nk225days WHERE end <> 0 AND date > '20120101' order by date asc,time asc ;""" n225fm = psql.read_sql(sql, conn) da0 = n225fm[0:1].date # 1レコード目の日付 da1 = n225fm.iloc[0].date print(n225fm) print("n225fm[0:1] = {0}".format(da0)) print("") print("n225fm.iloc[0] = {0}".format(da1))
出力結果はこのとおり。その値だけを取り出したいときは「iloc」を使って指定するんだね。「[0:1]」って指定をすると確かに1レコード目が取り出されるんだけど、インデックス番号やら型情報も取り出すようです。
date time start end 0 2012-01-04 09:00:00 8535 8540 1 2012-01-04 16:30:00 8525 8505 (省略) n225fm[0:1] = 0 2012-01-04 Name: date, dtype: object n225fm.iloc[0] = 2012-01-04