環境
- Python 3.11.2
- pandas 2.0.2
列がMultiIndex
であるDataFrameがあります。このDataFrameの列名を、pandas.DataFrame.rename関数で変えたいです。
In [303]: data = {("japan","male"):[1,2,3], ("japan","female"):[11,12,13], ("us","male"):[2,3,4]}
In [304]: df = pandas.DataFrame(data)
In [305]: df
Out[305]:
japan us
male female male
0 1 11 2
1 2 12 3
2 3 13 4
columns
にタプルで列を指定しても、列名は変更されませんでした。
# 列名は変更されない
In [310]: df.rename(columns={("us","male"):("US","MALE")})
Out[310]:
japan us
male female male
0 1 11 2
1 2 12 3
2 3 13 4
解決
タプルではなく文字列を指定する
タプルではなく文字列を指定すれば、各レベルの列名は変更できました。
In [308]: df.rename(columns={"japan":"JAPAN"})
Out[308]:
JAPAN us
male female male
0 1 11 2
1 2 12 3
2 3 13 4
In [309]: df.rename(columns={"male":"MALE"})
Out[309]:
japan us
MALE female MALE
0 1 11 2
1 2 12 3
2 3 13 4
columns
プロパティにMultiIndex
を指定する
In [319]: df2.columns = pandas.MultiIndex.from_tuples([("japan","male"), ("japan","female"), ("US","MALE")])
In [320]: df2
Out[320]:
japan US
male female MALE
0 1 11 2
1 2 12 3
2 3 13 4