Pandas DataFrame でインデックスによって行を削除する方法は 2 つあります。

(1)インデックスで1行削除するたとえば、インデックスが2の行を削除するには、次のようにします。

df.drop(index=2, inplace=True)

(2)インデックスで複数の行を削除するたとえば、インデックス値が2、4、6の行を削除するには、次のようにします。

df.drop(index=[2, 4, 6], inplace=True)

まず、7 行のシンプルな DataFrame を作成します。

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone", "Tablet", "Scanner"],
    "Price": [900, 200, 300, 450, 150, 250, 150],
}

df = pd.DataFrame(data)

print(df)

ご覧のとおり、インデックス値は 0 から始まって左側に配置されています。

Pandas DataFrame でインデックスによって行を削除する 1

Pandas DataFrame でインデックスを使用して単一行を削除する

特定の行を削除するには、その行を表す関連するインデックス値を指定する必要があります。たとえば、インデックスが 2 の行 (「モニター」製品) を削除するには、次のようにします。

df.drop(index=2, inplace=True)

完全なコード:

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone", "Tablet", "Scanner"],
    "Price": [900, 200, 300, 450, 150, 250, 150],
}

df = pd.DataFrame(data)

df.drop(index=2, inplace=True)

print(df)

コードを実行すると、インデックスが 2 の行は表示されなくなります。

Pandas DataFrame でインデックスによって行を削除する 2

Pandas DataFrame でインデックスを使用して複数の行を削除する

複数の行を削除したい場合はどうすればよいでしょうか?

たとえば、インデックス値が 2、4、6 の行を削除するには、次のようにします。

df.drop(index=[2, 4, 6], inplace=True)

完全な Python コードは次のとおりです。

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone", "Tablet", "Scanner"],
    "Price": [900, 200, 300, 450, 150, 250, 150],
}

df = pd.DataFrame(data)

df.drop(index=[2, 4, 6], inplace=True)

print(df)

インデックス値が 2、4、6 の行が存在しなくなったことがわかります。

Pandas DataFrame でインデックスによって行を削除する 3

インデックスは文字列です

これまで、インデックス値が数値である行を削除する方法を見てきました。

しかし、インデックス値が文字列の場合はどうなるでしょうか?

例えば:

index=["Item_A", "Item_B", "Item_C", "Item_D", "Item_E", "Item_F", "Item_G"]

したがって、新しいインデックス値を持つ DataFrame は次のようになります。

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone", "Tablet", "Scanner"],
    "Price": [900, 200, 300, 450, 150, 250, 150],
}

df = pd.DataFrame(
    data, index=["Item_A", "Item_B", "Item_C", "Item_D", "Item_E", "Item_F", "Item_G"]
)

print(df)

ご覧のとおり、新しい非数値インデックス値が左側に表示されます。

Pandas DataFrame でインデックスによって行を削除する 4

これらのインデックス値のうち2つ(「Item_B」と「Item_D」)を削除するには、次のようにします。

df.drop(index=["Item_B", "Item_D"], inplace=True)

完全な構文は次のとおりです。

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone", "Tablet", "Scanner"],
    "Price": [900, 200, 300, 450, 150, 250, 150],
}

df = pd.DataFrame(
    data, index=["Item_A", "Item_B", "Item_C", "Item_D", "Item_E", "Item_F", "Item_G"]
)

df.drop(index=["Item_B", "Item_D"], inplace=True)

print(df)

「Item_B」と「Item_D」のインデックス値を持つ行は表示されなくなります。

Pandas DataFrame でインデックスによって行を削除する 5