【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_df
Example 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]Excelto CSV 【Python】ExcelからCSVに書き出す|pandas,csv -
[Python]list concatenation 【Python】配列(list)の結合|arr + arr , np.concatenate -
[Python]Write a 1D arrayvia pandas 【Python】Excelに書き出す|pandas.ExcelWriter -
[Python]getdictionary 【Python】dictionaryから値を取得する2つの違い -
[Python]pathlib存在確認 【Python】フォルダとファイルの存在確認|pathlib -
[Python]Stringsplit 【Python】文字列を抜き出す|split