ともだちはすくないです

30代既婚男子。子供2人。日経先物トレードとかプログラミングとか英語とか

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