Pandas の Insert メソッド

Suraj Joshi 2023年1月30日
  1. Python の pandas.DataFrame.insert() メソッド
  2. 既存の列を追加するために insert() メソッドで allow_duplicates = True を設定する
Pandas の Insert メソッド

このチュートリアルでは、Pandas DataFrame の insert() メソッドを使用して、DataFrame に列を挿入する方法を説明します。

import pandas as pd

countries_df = pd.DataFrame(
    {
        "Country": ["Nepal", "Switzerland", "Germany", "Canada"],
        "Continent": ["Asia", "Europe", "Europe", "North America"],
        "Primary Language": ["Nepali", "French", "German", "English"],
    }
)
print("Countries DataFrame:")
print(countries_df, "\n")

出力:

Countries DataFrame:
       Country      Continent Primary Language
0        Nepal           Asia           Nepali
1  Switzerland         Europe           French
2      Germany         Europe           German
3       Canada  North America          English

上記の例で示した countries_df DataFrame を使用して、Pandas DataFrame で insert() メソッドを使用して DataFrame に列を挿入する方法を説明します。

Python の pandas.DataFrame.insert() メソッド

構文

DataFrame.insert(loc, column, value, allow_duplicates=False)

これは column という名前のカラムを loc の位置に value で指定した値を持つ DataFrame に挿入します。

すべての行に対して同じ値を持つ列を insert() メソッドを用いて挿入する

import pandas as pd

countries_df = pd.DataFrame(
    {
        "Country": ["Nepal", "Switzerland", "Germany", "Canada"],
        "Continent": ["Asia", "Europe", "Europe", "North America"],
        "Primary Language": ["Nepali", "French", "German", "English"],
    }
)
print("Countries DataFrame:")
print(countries_df, "\n")

countries_df.insert(3, "Capital", "Unknown")

print("Countries DataFrame after inserting Capital column:")
print(countries_df)

出力:

Countries DataFrame:
       Country      Continent Primary Language
0        Nepal           Asia           Nepali
1  Switzerland         Europe           French
2      Germany         Europe           German
3       Canada  North America          English

Countries DataFrame after inserting Capital column:
       Country      Continent Primary Language  Capital
0        Nepal           Asia           Nepali  Unknown
1  Switzerland         Europe           French  Unknown
2      Germany         Europe           German  Unknown
3       Canada  North America          English  Unknown

この関数は countries_df DataFrame の Capital 列を Unknown に設定した状態で 3 の位置に挿入します。

この位置は 0 から始まるので、位置 3 は DataFrame の 4 番目のカラムを参照しています。

各行の値を指定して DataFrame に列を挿入する

insert() メソッドを用いて挿入する列の各行の値を指定したい場合は、insert() メソッドの value 引数に値のリストを渡すことができます。

import pandas as pd

countries_df = pd.DataFrame(
    {
        "Country": ["Nepal", "Switzerland", "Germany", "Canada"],
        "Continent": ["Asia", "Europe", "Europe", "North America"],
        "Primary Language": ["Nepali", "French", "German", "English"],
    }
)
print("Countries DataFrame:")
print(countries_df, "\n")

capitals = ["Kathmandu", "Zurich", "Berlin", "Ottawa"]

countries_df.insert(2, "Capital", capitals)

print("Countries DataFrame after inserting Capital column:")
print(countries_df)

出力:

Countries DataFrame:
       Country      Continent Primary Language
0        Nepal           Asia           Nepali
1  Switzerland         Europe           French
2      Germany         Europe           German
3       Canada  North America          English

Countries DataFrame after inserting Capital column:
       Country      Continent    Capital Primary Language
0        Nepal           Asia  Kathmandu           Nepali
1  Switzerland         Europe     Zurich           French
2      Germany         Europe     Berlin           German
3       Canada  North America     Ottawa          English

DataFrame countries_dfCapital 列を 2 の位置に挿入します。

既存の列を追加するために insert() メソッドで allow_duplicates = True を設定する

import pandas as pd

countries_df = pd.DataFrame(
    {
        "Country": ["Nepal", "Switzerland", "Germany", "Canada"],
        "Continent": ["Asia", "Europe", "Europe", "North America"],
        "Primary Language": ["Nepali", "French", "German", "English"],
        "Capital": ["Kathmandu", "Zurich", "Berlin", "Ottawa"],
    }
)
print("Countries DataFrame:")
print(countries_df, "\n")

capitals = ["Kathmandu", "Zurich", "Berlin", "Ottawa"]

countries_df.insert(4, "Capital", capitals, allow_duplicates=True)

print("Countries DataFrame after inserting Capital column:")
print(countries_df)

出力:

Countries DataFrame:
       Country      Continent Primary Language    Capital
0        Nepal           Asia           Nepali  Kathmandu
1  Switzerland         Europe           French     Zurich
2      Germany         Europe           German     Berlin
3       Canada  North America          English     Ottawa

Countries DataFrame after inserting Capital column:
       Country      Continent Primary Language    Capital    Capital
0        Nepal           Asia           Nepali  Kathmandu  Kathmandu
1  Switzerland         Europe           French     Zurich     Zurich
2      Germany         Europe           German     Berlin     Berlin
3       Canada  North America          English     Ottawa     Ottawa

これは、countries_df の DataFrame に Capital という列が既に存在しているにもかかわらず、countries_df の DataFrame に Capital という列を追加します。

insert() メソッドで allow_duplicates = True を設定せずに既に存在する列を DataFrame に挿入しようとすると、以下のようなメッセージを含むエラーが発生します。ValueError: cannot insert column, already exists. というメッセージでエラーをスローします。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame Column