API · Pandas

Pandas DataFrame DataFrame.transpose() 関数

Pandas の DataFrame transpose()関数は、DataFrame の行を列に、列を行に変更します。

このページの内容

DataFrame.transpose() を使うと、pandas の DataFrame の行と列を入れ替えられます。返される DataFrame では、元の行ラベルが列ラベルに、元の列ラベルが行ラベルになります。

DataFrame.transpose() の構文

転置するオブジェクトに対して、df.transpose() のようにメソッドを呼び出します。転置された DataFrame が返され、元のオブジェクトも df として引き続き利用できます。

ここでは引数を指定しない呼び出しを扱い、バージョン固有のオプションは対象外とします。

例:DataFrame.transpose() で DataFrame を転置する

この例では、学生の名前、出席状況、得点を含む小さな表を作成します。メソッドを呼び出すと、元の各列が行になり、元の各インデックスラベルが列になります。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Obtained Marks": [90, 75, 82, 64, 45],
    }
)

transposed = dataframe.transpose()
print(transposed)

ラベルを見ると、入れ替わる方向を確認しやすくなります。結果では Attendance、Name、Obtained Marks が行ラベルとなり、0 から 4 が列ラベルになります。

同じデータ型の列を持つ DataFrame を転置する

すべての列に整数が入っている場合、入力の値は同じデータ型です。転置した後、元と転置後の両方の列の dtype を確認し、この例が使用中の pandas 環境でどのように表現されるかを見てみましょう。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "A": [6, 20, 80, 78, 95],
        "B": [60, 50, 7, 67, 54],
    }
)

transposed = dataframe.transpose()
print("Original values:")
print(dataframe)
print("Transposed values:")
print(transposed)
print("Original dtypes:")
print(dataframe.dtypes)
print("Transposed dtypes:")
print(transposed.dtypes)

この入力には、0 から 4 までのラベルが付いた5行と、A、B の2列があります。そのため、結果は2行5列になります。すべての数値 DataFrame が転置後に同じ dtype になると想定せず、この入力について表示された dtype 情報を確認してください。dtype の挙動は、値や使用される dtype 表現によって異なることがあります。

異なるデータ型の列を持つ DataFrame を転置する

DataFrame の列ごとに異なるデータ型を持たせることができます。この例では、2列に数値が入り、もう1列に名前が入っています。コードでは、操作の前後の値と dtype を表示し、この入力に対する結果を確認できます。

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Obtained Marks": [90, 75, 82, 64, 45],
    }
)

transposed = dataframe.transpose()
print("Original values:")
print(dataframe)
print("Transposed values:")
print(transposed)
print("Original dtypes:")
print(dataframe.dtypes)
print("Transposed dtypes:")
print(transposed.dtypes)

転置後の各行には、元の1列に含まれていた値がまとまります。これらの行には文字列と数値の両方が含まれるため、この混在データの例をあらゆる pandas のバージョンや dtype システムに当てはまる規則とみなさず、結果の dtype を確認してください。このメソッドは軸を入れ替えますが、転置前に異なる列のデータ型を統一するものではありません。