如何在Pandas数据框架中把索引转换为列

  • Post category:Python

在Pandas中,可以使用reset_index()方法将索引转换为列,下面是详细的攻略。

1. 使用reset_index方法

使用reset_index()方法可以实现索引转换为列的操作,reset_index()的默认行为是将索引转换为列并创建一个新的整数索引,例如:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Dave'],
        'Age': [28, 34, 29, 42, 36],
        'Country': ['US', 'UK', 'US', 'UK', 'UK']}

df = pd.DataFrame(data)

df = df.reset_index()
print(df)

运行结果如下所示,可以看到原来的行索引已经转换为了一列,并创建了一个新的整数索引:

   index   Name  Age Country
0      0    Tom   28      US
1      1   Jack   34      UK
2      2  Steve   29      US
3      3  Ricky   42      UK
4      4   Dave   36      UK

2. 保留原有索引并创建新的列

如果想保留原有的索引,并创建一个新的列来存储索引,可以使用reset_index()方法的drop参数,例如:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Dave'],
        'Age': [28, 34, 29, 42, 36],
        'Country': ['US', 'UK', 'US', 'UK', 'UK']}

df = pd.DataFrame(data)

df = df.reset_index(drop=False)
print(df)

运行结果如下所示,可以看到原本的行索引已经转换为了一列,并命名为了“index”:

   index   Name  Age Country
0      0    Tom   28      US
1      1   Jack   34      UK
2      2  Steve   29      US
3      3  Ricky   42      UK
4      4   Dave   36      UK

3. 将多个索引转换成列

在Pandas中,可以通过reset_index()方法将多个索引转换为列,例如:

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Dave'],
        'Age': [28, 34, 29, 42, 36],
        'Country': ['US', 'UK', 'US', 'UK', 'UK']}

df = pd.DataFrame(data)
df = df.set_index(['Country', 'Name'])

df = df.reset_index()
print(df)

运行结果如下所示,可以看到原来的多层索引都已经转换为了列,同时创建了一个新的整数索引:

  Country   Name  Age
0      US    Tom   28
1      UK   Jack   34
2      US  Steve   29
3      UK  Ricky   42
4      UK   Dave   36

通过以上攻略,可以轻松地将Pandas数据框架中的索引转换为列,以满足实际需求。