Pandasの.locと.ilocの違い

Python初心者で色々調べていますが、似たようなメソッドがあって、時々困りますね。

今回はPandasの.locと.ilocの違いについて簡単にまとめました。

サンプルコード

# Create data frame
df = pd.DataFrame([[0, 1, 2],
                    [10, 11, 12],
                    [20, 21, 22],
                    [30, 31, 32]],
                    columns = ["Col1", "Col2", "Col3"], index=["Row1","Row2","Row3", "Row4"])
# <0> DataFrame
print("--------\n<0> DataFrame", df, sep="\n")
# <1> Specify labels of row and column
print("--------\n<1> Specify labels of row and column: df.loc[\"Row2\",\"Col2\"]")
print(df.loc["Row2","Col2"])
# <2> Specify label of row
print("--------\nSpecify label of row: df.loc[\"Row2\"]")
print(df.loc["Row2"])
# <3> Specify label of column
print("--------\n<3> Specify label of column: df.loc[:,\"Col2\"]")
print(df.loc[:,"Col2"])
# <4> Specify indexes of row and column
print("--------\n<4> Specify indexes of row and column: df.iloc[2,2]")
print(df.iloc[2,2])
# <5> Specify index of row
print("--------\n<5> Specify index of row: df.iloc[2]")
print(df.iloc[2])
# <6> Specify index of column
print("--------\n<6> Specify index of column: df.iloc[:,2]")
print(df.iloc[:,2])

サンプルコード結果

--------
<0> DataFrame
      Col1  Col2  Col3
Row1     0     1     2
Row2    10    11    12
Row3    20    21    22
Row4    30    31    32
--------
<1> Specify labels of row and column: df.loc["Row2","Col2"]
11
--------
Specify label of row: df.loc["Row2"]
Col1    10
Col2    11
Col3    12
Name: Row2, dtype: int64
--------
<3> Specify label of column: df.loc[:,"Col2"]
Row1     1
Row2    11
Row3    21
Row4    31
Name: Col2, dtype: int64
--------
<4> Specify indexes of row and column: df.iloc[2,2]
22
--------
<5> Specify index of row: df.iloc[2]
Col1    20
Col2    21
Col3    22
Name: Row3, dtype: int64
--------
<6> Specify index of column: df.iloc[:,2]
Row1     2
Row2    12
Row3    22
Row4    32
Name: Col3, dtype: int64
よっさん
  • よっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後某日系IT企業でグローバル案件に携わる。マレーシアに1.5年赴任した経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。

コメントする

メールアドレスが公開されることはありません。