【Python】シートにあるデータを配列に格納する|pandas.DataFrame
作成日:2025-09-30
更新日:2025-10-01

pandasの
DataFrame
DataFrame
Excel シートを DataFrame に読み込む
import pandas as pd
def get_current_region_df(df, row, col):
"""
Get CurrentRegion (連続データ領域) as a DataFrame
指定セルを基点としたCurrentRegionをDataFrameとして返す
row, col は 0-based index
"""
# Validate input / 入力検証
if row < 0 or col < 0:
return pd.DataFrame()
max_row, max_col = df.shape
# Expand upwards / 上方向
top = row
while top > 0 and pd.notna(df.iat[top - 1, col]):
top -= 1
# Expand downwards / 下方向
bottom = row
while bottom < max_row - 1 and pd.notna(df.iat[bottom + 1, col]):
bottom += 1
# Expand left / 左方向
left = col
while left > 0 and pd.notna(df.iat[row, left - 1]):
left -= 1
# Expand right / 右方向
right = col
while right < max_col - 1 and pd.notna(df.iat[row, right + 1]):
right += 1
# Slice region / 領域をスライス
region_df = df.iloc[top:bottom+1, left:right+1]
return region_dfExample Usage
# Excel 読み込み / Read Excel
df = pd.read_excel("test.xlsx", sheet_name="Sheet1", header=None)
# B2 (Excel基準) → indexでは (1,1)
region = get_current_region_df(df, 1, 1)
print(region)- pandas.read_excel でシートを DataFrame に直接読み込む
- DataFrame では「基点セルから上下左右に空セルまで広がる領域」を計算して切り出す
- 戻り値は 別 DataFrame として返すとDataFrame として保持できる

pd.notna って?

欠損値を判定するの
pd.notna|欠損値(NaN / None)の判定
pd.notna(...)- pandas の欠損値判定関数。
pd.notna(x)はxが NaN/None でないならTrueを返す。- 逆に
pd.isna(x)は欠損値ならTrueを返す。
df.iat[top - 1, col]- DataFrame のセルに「行番号」「列番号」でアクセスする方法。
.iatは 高速な位置指定アクセス (integer position access)。- 例:
df.iat[0, 1]→ 1行目2列目の値。
Example
import pandas as pd
import numpy as np
data = [[1, 2, None],
[4, np.nan, 6],
[7, 8, 9]]
df = pd.DataFrame(data)
print(df.iat[0, 2]) # -> None
print(pd.notna(df.iat[0, 2])) # -> False (空だから)
print(df.iat[1, 1]) # -> nan
print(pd.notna(df.iat[1, 1])) # -> False (NaNだから)
print(df.iat[2, 2]) # -> 9
print(pd.notna(df.iat[2, 2])) # -> True (値あり)
| pd.notna | 欠損値でないかを判定 |
| pd.isna | 欠損値かを判定 |
| .iat | 行列番号で高速アクセス |
| NaN | 欠損値(数値型の空) |
| None | 欠損値(Pythonの空) |
Use pd.notna(df.iat[r, c]) to safely check if a DataFrame cell has a value.
DataFrameのセルに値が入っているかを判定するには pd.notna(df.iat[r, c]) を使う

なお、注意点は
B2セルが(1,1)になること
Excel のセル番地 (B2) と pandas のインデックス (0-based) にはズレがある
Excel基準
- Excel は 行番号・列番号が 1-based(1から始まる)。
- B2 = 「2行目、2列目」。
pandas基準
- pandas の
.iatや.ilocは 0-based index(0から始まる)。 - よって Excel の (2,2) は pandas では (1,1)。
Example
import pandas as pd
# 仮のシートデータ (3x3)
df = pd.DataFrame([
["A1", "B1", "C1"],
["A2", "B2", "C2"],
["A3", "B3", "C3"]
])
print(df) # 表示
print(df.iat[1,1]) # -> "B2"
出力:
0 1 2
0 A1 B1 C1
1 A2 B2 C2
2 A3 B3 C3
ここで df.iat[1,1] が "B2" を返す。
Excel と pandas の対応表
| Excel | pandas.iat | 説明 |
|---|---|---|
| A1 | (0,0) | 左上 |
| B2 | (1,1) | 2行2列目 |
| C5 | (4,2) | 5行3列目 |
Remember: Excel = 1-based, pandas = 0-based.
Excelは1始まり、pandasは0始まりを忘れないこと
| 1-based Index | 1始まりインデックス |
| 0-based Index | 0始まりインデックス |
| Cell Reference | セル参照 |
| Offset | オフセット |
| Mapping | 対応関係 |
Referenced Insights & Citations
- pandas documentation: pandas.notna
- pandas documentation: pandas.DataFrame.iat
- pandas documentation: https://pandas.pydata.org/docs/
Use pandas DataFrame
when your goal is data analysis
when your goal is data analysis
2025-09-30
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[Python]datetimestring format time 【Python】文字列を日付型に変える|datetime.strftime -

[Python]pathlibfor extension 【Python】文字列から拡張子を取得して、文字列で返す|pathlib.Path.suffix -

[Python]Write a 1D arrayvia pandas 【Python】Excelに書き出す|pandas.ExcelWriter -

[Python]endswith+ lower 【Python】拡張子の存在確認|endswith + lower(Method Chaining) -

[Python]stripspace 【Python】先頭,末尾,両端の空白を削除する|.strip -

[Python]Convert a stringinto datetime 【Python】文字列を日付型に変える|datetime.strptime