Pandas Dataframe のインデックスを列に変換する方法
Asad Riaz
2023年1月30日
-
インデックスを新しい列として追加する
df.index
-
現在のインデックス列名を変更するには、
rename_axis
を指定したreset_index
を使用する -
列をインデックスに変換する
set_index
メソッド -
MultiIndex
はcolumn
にindex
の複数のレイヤーを設定する
Pandas の DataFrame
の index
を列に変換するさまざまな方法を紹介します。df.index
、reset_index
、rename axis
を使用して、index
と set_index
の名前を変更します。
また、インデックスの複数のレイヤーを持つ特定の DataFrame
にマルチインデックス
を適用する方法を紹介します。
インデックスを新しい列として追加する df.index
列としてインデックスを追加する最も簡単な方法は、df.index
を新しい列として DataFrame
に追加することです。
次のコードを検討してください。
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
columns=["a", "b", "d"],
)
df["index"] = df.index
print(df)
出力:
a b d index1
0 1.0 2.0 NaN 0
1 NaN 4.0 NaN 1
2 5.0 NaN 7.0 2
3 5.0 NaN NaN 3
現在のインデックス列名を変更するには、rename_axis
を指定した reset_index
を使用する
index
の名前を変更してから、reset_index
をシリーズに使用できます。
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
columns=["a", "b", "d"],
)
df = df.rename_axis("index").reset_index()
print(df)
出力:
index a b d
0 0 1.0 2.0 NaN
1 1 NaN 4.0 NaN
2 2 5.0 NaN 7.0
3 3 5.0 NaN NaN
列をインデックスに変換する set_index
メソッド
set_index
メソッドを使用して任意の列を index
に変換できます:
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, 4, 7), (5, 5, None)], columns=["a", "b", "d"]
)
df.set_index("b", inplace=True)
print(df)
出力:
a d
b
2 1.0 NaN
4 NaN NaN
4 5.0 7.0
5 5.0 NaN
または、元のように index
名を削除する場合は、df.index.name = None
を実行できます。
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, 4, 7), (5, 5, None)], columns=["a", "b", "d"]
)
df.set_index("b", inplace=True)
df.index.name = None
print(df)
出力:
a d
2 1.0 NaN
4 NaN NaN
4 5.0 7.0
5 5.0 NaN
MultiIndex
は column
に index
の複数のレイヤーを設定する
MultiIndex.from_product()
関数を使用して、次のように MultiIndex
を作成できます。
# python 3.x
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product(
[["Burger", "Steak", "Sandwich"], ["Half", "Full"]], names=["Item", "Type"]
)
df = pd.DataFrame(
index=index, data=np.random.randint(0, 10, (6, 4)), columns=list("abcd")
)
print(df)
出力:
a b c d
Item Type
Burger Half 0 3 9 1
Full 2 2 0 5
Steak Half 8 4 5 5
Full 5 8 0 7
Sandwich Half 2 8 9 5
Full 4 4 5 9