PythonのPandasで行を指定して操作する方法について

Python,イメージ

AI実装検定のご案内

Pandasで「行を指定して操作する方法」には、いくつかの代表的なやり方があります。

ここでは基本から応用まで体系的に解説します。

目次

行を指定する基本的な方法

インデックス番号で指定

import pandas as pd

df = pd.DataFrame({
    "名前": ["田中", "佐藤", "鈴木", "高橋"],
    "年齢": [25, 30, 28, 35],
    "職業": ["エンジニア", "デザイナー", "営業", "マーケティング"]
})

# 先頭の行(0番目)
print(df.iloc[0])

# 2行目から3行目まで
print(df.iloc[1:3])
  • ilocは「行番号」で指定する方法です。Pythonのリストスライスと同じルールで動作します。
  • iloc[0] → 0番目の行
  • iloc[1:3] → 1行目から2行目(3は含まれない)

インデックスラベルで指定

# 行にラベルを付け直す
df = pd.DataFrame({
    "名前": ["田中", "佐藤", "鈴木", "高橋"],
    "年齢": [25, 30, 28, 35],
    "職業": ["エンジニア", "デザイナー", "営業", "マーケティング"]
}, index=["a", "b", "c", "d"])

print("\n=== locで行を指定 ===")
print("ラベルaの行:\n", df.loc["a"])
print("ラベルaとcの行:\n", df.loc[["a", "c"]])
  • locは「インデックスラベル」で指定する方法です。
  • loc["a"] → ラベルaの行
  • loc[["a", "c"]] → 複数のラベルをリストで指定

条件で行を指定して操作する方法

条件を満たす行だけ抽出・操作するのもよく使われます。

print("\n=== 条件で行を抽出 ===")
print("年齢が30以上の行:\n", df[df["年齢"] >= 30])

# 条件を満たす行を更新
df.loc[df["年齢"] >= 30, "職業"] = "マネージャー"
print("\n年齢30以上の人の職業を変更:\n", df)
  • df[df["年齢"] >= 30] → 条件フィルタで抽出
  • loc[条件, 列名] = 値 → 条件を満たす行に対して更新

行の追加・削除

行の追加

print("\n=== 行を追加 ===")
df.loc["e"] = ["山田", 40, "ディレクター"]
print(df)

行の削除

print("\n=== 行を削除 ===")
df = df.drop("b")  # ラベルで削除
print("ラベルbを削除:\n", df)

df = df.drop(df.index[0])  # 行番号で削除
print("0番目の行を削除:\n", df)

複雑な操作例

複数条件で行を抽出

print("\n=== 複数条件で抽出 ===")
df = pd.DataFrame({
    "名前": ["田中", "佐藤", "鈴木", "高橋"],
    "年齢": [25, 30, 28, 35],
    "職業": ["エンジニア", "デザイナー", "営業", "マーケティング"]
})
print(df[(df["年齢"] >= 30) & (df["職業"] == "デザイナー")])

行の一括変換

print("\n=== 行の一括変換 ===")
df["年齢"] = df["年齢"] + 1
print(df)

行をシャッフル

print("\n=== 行をシャッフル ===")
df = df.sample(frac=1).reset_index(drop=True)
print(df)

よくある用途別まとめ

  • 行番号でアクセスiloc
  • ラベルでアクセスloc
  • 条件で抽出・更新df[条件]loc[条件, 列名]
  • 行の追加df.loc[new_index] = [...]
  • 行の削除df.drop()

以上、Pandasで行を指定して操作する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次