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 でインデックスを使用して単一行を削除する
特定の行を削除するには、その行を表す関連するインデックス値を指定する必要があります。たとえば、インデックスが 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、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 の行が存在しなくなったことがわかります。

インデックスは文字列です
これまで、インデックス値が数値である行を削除する方法を見てきました。
しかし、インデックス値が文字列の場合はどうなるでしょうか?
例えば:
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)
ご覧のとおり、新しい非数値インデックス値が左側に表示されます。

これらのインデックス値のうち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」のインデックス値を持つ行は表示されなくなります。
