【Pandas DataFrame】行・列の抽出・変更 [loc, at, iloc, iat]

 ※ 本記事は広告・プロモーションを含みます。
Pandas

たっきん(Twitter)です!

今回は、DataFrameを扱う上で基本中の基本操作となる任意の行・列データの抽出・変更の操作方法について説明していきます。

任意の行・列データの抽出・変更で使用するのは.loc[], .at[], .iloc[], .iat[]の4つになります。

違いやそれぞれの用途は次の表の通りになります。

位置指定方法
:ラベル名
位置指定方法
:番号
用途
.loc[].iloc[]単一、複数のデータを抽出・変更
.at[].iat[]単一のデータを抽出・変更
(処理速度は.loc[].iloc[]より高速)

僕個人的に使用頻度が高いのは抽出・変更位置を行・列ラベル名で指定する.loc[], .at[]になります。

行・列番号で指定する.iloc[],.iat[]は使用頻度が低い・・・というよりかは特段理由がない限りは使用しなくてよいと思っているくらいです。

Pandas.DataFrameのメリットは「行・列ラベル名」指定でデータにアクセスできることです。

行・列番号で指定する場合に注意したいのが、行・列が挿入されると本来選択したかった行・列の番号がずれてしまい、バグにつながる可能性があることです。

ラベル指定ではその点に注意する必要がないため、僕は極力ラベル名で位置を指定するようにしています。

また、説明するにあたり、次のDataFrameから抽出・変更する例をサンプルコードを使って説明してきます。

import pandas as pd

ohlc_data = [
    ["2020/4/6", 108.432, 119.393, 98.403, 109.252],
    ["2020/4/7", 109.252, 119.294, 98.680, 108.799],
    ["2020/4/8", 108.799, 119.109, 98.514, 108.854],
    ["2020/4/9", 108.854, 119.071, 98.218, 108.545],
    ["2020/4/10", 108.545, 118.615, 98.341, 108.515],
]

# DataFrameの生成
df = pd.DataFrame(ohlc_data, columns=["datetime", "open", "high", "low", "close"])

# "datetime"列を行ラベル(インデックス)に設定
df.set_index("datetime", inplace=True)

print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""
Pandasに関する記事を多数書いてます

単ー or 複数の行・列・要素を抽出・変更 [loc, iloc]

単ー or 複数の行、列、要素を抽出したり、値を変更したりする場合はloc[], iloc[]を使用します。

範囲の選択は次のように指定します。

  • .loc["行ラベル", "列ラベル"(省略可)]
  • .iloc[行番号, 列番号(省略可)]

列ラベル列番号を省略した場合、全列が選択されます。

行・列の範囲指定方法は次の3つが主となります。

指定方法.loc[]記述例.iloc[]記述例
1単一.loc[“ra”,“cb”].iloc[0,1]
2リスト.loc[
 [“ra”,”rb”,”rc”],
 [“ca”,”cb”]
]
.iloc[
 [0,1,2],
 [0,1]
]
3スライス.loc[
 “ra”:”rc”,
 ”ca”:”cb”
]
.iloc[
 0:2,
 0:1
]

.loc[]のスライス指定は、通常のpythonスライスとは異なり「終了」が選択対象に含まれるので注意しましょう!
 ・.loc["ra":"rc","ca":"cb"] → ”rc”行、”cb”列も含まれる
 ・.iloc[0:2,0:1] → [2]行(3行目)、[1]行(2列目)は含まれない

「行」の抽出・変更

行のみを抽出・変更する場合は次のような記述になります。

  • .loc["行ラベル"]
    (または、.loc["行ラベル", :]
  • .iloc["行番号"]
    (または、.iloc["行番号", :]

単一行

下記の単一行を選択する場合の例になります。

単一の行を抽出した場合はSeries型で取得されます。

# 単一行の抽出
sr_row = df.loc["2020/4/8"]
print(sr_row)
"""
open     108.799
high     119.109
low       98.514
close    108.854
Name: 2020/4/8, dtype: float64
"""

print(type(sr_row))
"""
<class 'pandas.core.series.Series'>
"""

値を変更する場合は次のように記述します。

列ごとに変更する値を指定する場合はリストで指定します。

# 単一行の変更
df.loc["2020/4/8"] = 0.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8     0.000    0.000   0.000    0.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

df.loc["2020/4/8"] = [1.0, 2.0, 3.0, 4.0]
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8     1.000    2.000   3.000    4.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

以下は、.iloc[]を使用した記述例になります。

# 単一行の抽出
sr_row = df.iloc[2]
print(sr_row)
"""
open     108.799
high     119.109
low       98.514
close    108.854
Name: 2020/4/8, dtype: float64
"""

# 単一行の変更
df.iloc[2] = 0.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8     0.000    0.000   0.000    0.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

df.iloc[2] = [1.0, 2.0, 3.0, 4.0]
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8     1.000    2.000   3.000    4.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

複数行(リスト指定)

下記の複数行をリストで選択する場合の例になります。

複数行の取得のため、DataFrame型で取得されます。

# 複数行(リスト指定)の抽出
df_rows = df.loc[["2020/4/6", "2020/4/8", "2020/4/10"]]
print(df_rows)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/8   108.799  119.109  98.514  108.854
2020/4/10  108.545  118.615  98.341  108.515
"""

print(type(df_rows))
"""
<class 'pandas.core.frame.DataFrame'>
"""

値を変更する場合は次のように記述します。

# 複数行(リスト指定)の変更
df.loc[["2020/4/6", "2020/4/8", "2020/4/10"]] = -1.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6    -1.000   -1.000  -1.000   -1.000  # <-変更行
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8    -1.000   -1.000  -1.000   -1.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10   -1.000   -1.000  -1.000   -1.000  # <-変更行
"""

以下は、.iloc[]を使用した記述例になります。

# 複数行(リスト指定)の抽出
df_rows = df.iloc[[0, 2, 4]]
print(df_rows)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/8   108.799  119.109  98.514  108.854
2020/4/10  108.545  118.615  98.341  108.515
"""

# 複数行(リスト指定)の変更
df.iloc[[0, 2, 4]] = -1.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6    -1.000   -1.000  -1.000   -1.000  # <-変更行
2020/4/7   109.252  119.294  98.680  108.799
2020/4/8    -1.000   -1.000  -1.000   -1.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10   -1.000   -1.000  -1.000   -1.000  # <-変更行
"""

複数行(スライス指定)

下記の複数行をスライスで選択する場合の例になります。

複数行の取得のため、DataFrame型で取得されます。

# 複数行(スライス指定)の抽出
df_rows = df.loc["2020/4/7":"2020/4/9"]
print(df_rows)
"""
             open     high     low    close
datetime                                   
2020/4/7  109.252  119.294  98.680  108.799
2020/4/8  108.799  119.109  98.514  108.854
2020/4/9  108.854  119.071  98.218  108.545
"""

print(type(df_rows))
"""
<class 'pandas.core.frame.DataFrame'>
"""

値を変更する場合は次のように記述します。

# 複数行(スライス指定)の変更
df.loc["2020/4/7":"2020/4/9"] = -2.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7    -2.000   -2.000  -2.000   -2.000  # <-変更行
2020/4/8    -2.000   -2.000  -2.000   -2.000  # <-変更行
2020/4/9    -2.000   -2.000  -2.000   -2.000  # <-変更行
2020/4/10  108.545  118.615  98.341  108.515
"""

以下は、.iloc[]を使用した記述例になります。

# 複数行(スライス指定)の抽出
df_rows = df.iloc[1:3]
print(df_rows)
"""
             open     high     low    close
datetime                                   
2020/4/7  109.252  119.294  98.680  108.799
2020/4/8  108.799  119.109  98.514  108.854
"""

# 複数行(スライス指定)の変更
df.iloc[1:3] = -2.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7    -2.000   -2.000  -2.000   -2.000  # <-変更行
2020/4/8    -2.000   -2.000  -2.000   -2.000  # <-変更行
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

「列」の抽出・変更

列のみを抽出・変更する場合は次のような記述になります。

  • .loc[:, "列ラベル"]
  • .iloc[:, "列番号"]

単一列

下記の単一列を選択する場合の例になります。

列ラベル指定の場合に限り、インデックス[]でも列の抽出・変更ができます。
 ・例:df["open"]

単一の列を抽出した場合はSeries型で取得されます。

# 単一列の抽出
sr_col = df.loc[:, "open"]
print(sr_col)
"""
datetime
2020/4/6     108.432
2020/4/7     109.252
2020/4/8     108.799
2020/4/9     108.854
2020/4/10    108.545
Name: open, dtype: float64
"""

print(type(sr_col))
"""
<class 'pandas.core.series.Series'>
"""

# 単一列の抽出(インデックス[])
sr_col = df["open"]
print(sr_col)
"""
datetime
2020/4/6     108.432
2020/4/7     109.252
2020/4/8     108.799
2020/4/9     108.854
2020/4/10    108.545
Name: open, dtype: float64
"""

値を変更する場合は次のように記述します。

行ごとに変更する値を指定する場合はリストで指定します。

# 単一列の変更
df.loc[:, "open"] = 0.0
print(df)
"""
           変更列
             ↓
           open     high     low    close
datetime                                 
2020/4/6    0.0  119.393  98.403  109.252
2020/4/7    0.0  119.294  98.680  108.799
2020/4/8    0.0  119.109  98.514  108.854
2020/4/9    0.0  119.071  98.218  108.545
2020/4/10   0.0  118.615  98.341  108.515
"""

df.loc[:, "open"] = [1.0, 2.0, 3.0, 4.0, 5.0]
print(df)
"""
           変更列
             ↓
           open     high     low    close
datetime                                 
2020/4/6    1.0  119.393  98.403  109.252
2020/4/7    2.0  119.294  98.680  108.799
2020/4/8    3.0  119.109  98.514  108.854
2020/4/9    4.0  119.071  98.218  108.545
2020/4/10   5.0  118.615  98.341  108.515
"""

# 単一列の変更(インデックス[])
df["low"] = [10.0, 20.0, 30.0, 40.0, 50.0]
print(df)
"""
                          変更列
                            ↓
           open     high   low    close
datetime                               
2020/4/6    0.0  119.393  10.0  109.252
2020/4/7    0.0  119.294  20.0  108.799
2020/4/8    0.0  119.109  30.0  108.854
2020/4/9    0.0  119.071  40.0  108.545
2020/4/10   0.0  118.615  50.0  108.515
"""

以下は、.iloc[]を使用した記述例になります。

# 単一列の抽出
sr_col = df.iloc[:, 0]
print(sr_col)
"""
open     108.799
high     119.109
low       98.514
close    108.854
Name: 2020/4/8, dtype: float64
"""

# 単一列の変更
df.iloc[:, 0] = 0.0
print(df)
"""
           変更列
             ↓
           open     high     low    close
datetime                                 
2020/4/6    0.0  119.393  98.403  109.252
2020/4/7    0.0  119.294  98.680  108.799
2020/4/8    0.0  119.109  98.514  108.854
2020/4/9    0.0  119.071  98.218  108.545
2020/4/10   0.0  118.615  98.341  108.515
"""

df.iloc[:, 0] = [1.0, 2.0, 3.0, 4.0, 5.0]
print(df)
"""
           変更列
             ↓
           open     high     low    close
datetime                                 
2020/4/6    1.0  119.393  98.403  109.252
2020/4/7    2.0  119.294  98.680  108.799
2020/4/8    3.0  119.109  98.514  108.854
2020/4/9    4.0  119.071  98.218  108.545
2020/4/10   5.0  118.615  98.341  108.515
"""

複数列(リスト指定)

下記の複数列をリストで選択する場合の例になります。

列ラベル指定の場合に限り、インデックス[]でも列の抽出・変更ができます。
 ・例:df[["high", "close"]]

複数列の取得のため、DataFrame型で取得されます。

# 複数列(リスト指定)の抽出
df_cols = df.loc[:, ["high", "close"]]
print(df_cols)
"""
              high    close
datetime                   
2020/4/6   119.393  109.252
2020/4/7   119.294  108.799
2020/4/8   119.109  108.854
2020/4/9   119.071  108.545
2020/4/10  118.615  108.515
"""

print(type(df_cols))
"""
<class 'pandas.core.frame.DataFrame'>
"""

# 複数列(リスト指定)の抽出(インデックス[])
df_cols = df[["high", "close"]]
print(df_cols)
"""
              high    close
datetime                   
2020/4/6   119.393  109.252
2020/4/7   119.294  108.799
2020/4/8   119.109  108.854
2020/4/9   119.071  108.545
2020/4/10  118.615  108.515
"""

値を変更する場合は次のように記述します。

# 複数列(リスト指定)の変更
df.loc[:, ["high", "close"]] = -1.0
print(df)
"""
                    変更列         変更列
                      ↓              ↓
              open  high     low  close
datetime                               
2020/4/6   108.432  -1.0  98.403   -1.0
2020/4/7   109.252  -1.0  98.680   -1.0
2020/4/8   108.799  -1.0  98.514   -1.0
2020/4/9   108.854  -1.0  98.218   -1.0
2020/4/10  108.545  -1.0  98.341   -1.0
"""

# 複数列(リスト指定)の変更(インデックス[])
df[["high", "close"]] = -10.0
print(df)
"""
              open  high     low  close
datetime                               
2020/4/6   108.432 -10.0  98.403  -10.0
2020/4/7   109.252 -10.0  98.680  -10.0
2020/4/8   108.799 -10.0  98.514  -10.0
2020/4/9   108.854 -10.0  98.218  -10.0
2020/4/10  108.545 -10.0  98.341  -10.0
"""

以下は、.iloc[]を使用した記述例になります。

# 複数列(リスト指定)の抽出
df_cols = df.iloc[:, [1, 3]]
print(df_cols)
"""
              high    close
datetime                   
2020/4/6   119.393  109.252
2020/4/7   119.294  108.799
2020/4/8   119.109  108.854
2020/4/9   119.071  108.545
2020/4/10  118.615  108.515
"""

# 複数行(リスト指定)の変更
df.iloc[:, [1, 3]] = -1.0
print(df)
"""
                    変更列         変更列
                      ↓              ↓
              open  high     low  close
datetime                               
2020/4/6   108.432  -1.0  98.403   -1.0
2020/4/7   109.252  -1.0  98.680   -1.0
2020/4/8   108.799  -1.0  98.514   -1.0
2020/4/9   108.854  -1.0  98.218   -1.0
2020/4/10  108.545  -1.0  98.341   -1.0
"""

複数列(スライス指定)

下記の複数列をスライスで選択する場合の例になります。

複数列の取得のため、DataFrame型で取得されます。

# 複数列(スライス指定)の抽出
df_cols = df.loc[:, "high":"close"]
print(df_cols)
"""
              high     low    close
datetime                           
2020/4/6   119.393  98.403  109.252
2020/4/7   119.294  98.680  108.799
2020/4/8   119.109  98.514  108.854
2020/4/9   119.071  98.218  108.545
2020/4/10  118.615  98.341  108.515
"""

print(type(df_cols))
"""
<class 'pandas.core.frame.DataFrame'>
"""

値を変更する場合は次のように記述します。

# 複数列(スライス指定)の変更
df.loc[:, "high":"close"] = -2.0
print(df)
"""
                   変更列 変更列 変更列
                      ↓    ↓      ↓
              open  high  low  close
datetime                            
2020/4/6   108.432  -2.0 -2.0   -2.0
2020/4/7   109.252  -2.0 -2.0   -2.0
2020/4/8   108.799  -2.0 -2.0   -2.0
2020/4/9   108.854  -2.0 -2.0   -2.0
2020/4/10  108.545  -2.0 -2.0   -2.0
"""

以下は、.iloc[]を使用した記述例になります。

# 複数列(スライス指定)の抽出
df_cols = df.iloc[:, 1:3]
print(df_cols)
"""
              high     low
datetime                  
2020/4/6   119.393  98.403
2020/4/7   119.294  98.680
2020/4/8   119.109  98.514
2020/4/9   119.071  98.218
2020/4/10  118.615  98.341
"""

# 複数行(スライス指定)の変更
df.iloc[1:3] = -2.0
print(df)
"""
                   変更列 変更列
                      ↓    ↓
              open  high  low    close
datetime                              
2020/4/6   108.432  -2.0 -2.0  109.252
2020/4/7   109.252  -2.0 -2.0  108.799
2020/4/8   108.799  -2.0 -2.0  108.854
2020/4/9   108.854  -2.0 -2.0  108.545
2020/4/10  108.545  -2.0 -2.0  108.515
"""

「要素」の抽出・変更

行・列の範囲で指定された要素を抽出・変更する場合は次のような記述になります。

  • .loc["行ラベル", "列ラベル"]
  • .iloc["行番号", "列番号"]

単ー要素

下記の単一要素を選択する場合の例になります。

単一の要素を抽出したい場合は行ラベル列ラベルに単一のラベルを指定します。

# 単一要素の抽出
elem = df.loc["2020/4/7", "open"]
print(elem)
"""
109.252
"""

値を変更する場合は次のように記述します。

# 単一要素の変更
df.loc["2020/4/7", "open"] = 0.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7     0.000  119.294  98.680  108.799
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

以下は、.iloc[]を使用した記述例になります。

# 単一要素の抽出
elem = df.iloc[1, 0]
print(elem)
"""
109.252
"""

# 単一要素の変更
df.iloc[1, 0] = 0.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7     0.000  119.294  98.680  108.799
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

単ー要素を取得したい場合は.loc[].iloc[]を使用するのではなく、.at[].iat[]を使用した方が良いです。
.at[].iat[]は単一の要素しか抽出・変更ができませんが、.loc[].iloc[]よりも高速に処理できるメリットがあります。

複数要素(リスト指定)

下記の複数要素をリストで選択する場合の例になります。

複数要素の取得のため、DataFrame型で取得されます。

# 複数要素(リスト指定)の抽出
df_elems = df.loc[["2020/4/7", "2020/4/9"], ["high", "close"]]
print(df_elems)
"""
             high    close
datetime                  
2020/4/7  119.294  108.799
2020/4/9  119.071  108.545
"""

print(type(df_elems))
"""
<class 'pandas.core.frame.DataFrame'>
"""

値を変更する場合は次のように記述します。

# 複数要素(リスト指定)の変更
df.loc[["2020/4/7", "2020/4/9"], ["high", "close"]] = -1.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252   -1.000  98.680   -1.000
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854   -1.000  98.218   -1.000
2020/4/10  108.545  118.615  98.341  108.515
"""

以下は、.iloc[]を使用した記述例になります。

# 複数要素(リスト指定)の抽出
df_elems = df.iloc[[1, 3], [1, 3]]
print(df_elems)
"""
             high    close
datetime                  
2020/4/7  119.294  108.799
2020/4/9  119.071  108.545
"""

# 複数要素(リスト指定)の変更
df.iloc[[1, 3], [1, 3]] = -1.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252   -1.000  98.680   -1.000
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854   -1.000  98.218   -1.000
2020/4/10  108.545  118.615  98.341  108.515
"""

複数要素(スライス指定)

下記の複数要素をスライスで選択する場合の例になります。

複数要素の取得のため、DataFrame型で取得されます。

# 複数要素(スライス指定)の抽出
df_elems = df.loc["2020/4/7":"2020/4/9", "high":"close"]
print(df_elems)
"""
             high     low    close
datetime                          
2020/4/7  119.294  98.680  108.799
2020/4/8  119.109  98.514  108.854
2020/4/9  119.071  98.218  108.545
"""

print(type(df_elems))
"""
<class 'pandas.core.frame.DataFrame'>
"""

値を変更する場合は次のように記述します。

# 複数要素(スライス指定)の変更
df.loc["2020/4/7":"2020/4/9", "high":"close"] = -2.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252   -2.000  -2.000   -2.000
2020/4/8   108.799   -2.000  -2.000   -2.000
2020/4/9   108.854   -2.000  -2.000   -2.000
2020/4/10  108.545  118.615  98.341  108.515
"""

以下は、.iloc[]を使用した記述例になります。

# 複数要素(スライス指定)の抽出
df_elems = df.iloc[[1, 3], [1, 3]]
print(df_elems)
"""
             high    close
datetime                  
2020/4/7  119.294  108.799
2020/4/9  119.071  108.545
"""

# 複数要素(スライス指定)の変更
df.iloc[1:3, 1:3] = -2.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7   109.252   -2.000  -2.000  108.799
2020/4/8   108.799   -2.000  -2.000  108.854
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

単ーの要素を抽出・変更 [at, iat]

単ーの要素を抽出したり、値を変更したりする場合はat[]iat[]を使用します。

loc[]iloc[]の単一指定でも同じことができますが、at[]iat[]の方が高速に処理できますので、単一要素の抽出・変更はこちらを使用するようにしましょう!

位置の選択は次のように指定します。

  • .at["行ラベル", "列ラベル"]
  • .iat[行番号, 列番号]

サンプルコードで動作を確認してみましょう!

下記の要素を選択する場合の例で説明していきます。

# 単一要素の抽出
elem = df.at["2020/4/7", "open"]
print(elem)
"""
109.252
"""

# 単一要素の変更
df.loc["2020/4/7", "open"] = 0.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7     0.000  119.294  98.680  108.799
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

以下は、.iat[]を使用した記述例になります。

# 単一要素の抽出
elem = df.iloc[1, 0]
print(elem)
"""
109.252
"""

# 単一要素の変更
df.iloc[1, 0] = 0.0
print(df)
"""
              open     high     low    close
datetime                                    
2020/4/6   108.432  119.393  98.403  109.252
2020/4/7     0.000  119.294  98.680  108.799
2020/4/8   108.799  119.109  98.514  108.854
2020/4/9   108.854  119.071  98.218  108.545
2020/4/10  108.545  118.615  98.341  108.515
"""

参考

スポンサーリンク

コメント

タイトルとURLをコピーしました