熊猫:使用set_index()将列设置为索引会创建一个子索引。为什么会发生以及如何将其删除?

时间:2018-08-15 20:49:59

标签: python pandas dataframe indexing

我想将pandas数据框中的第一列用作行索引,所以我尝试使用pandas.set_index(0, inplace=True)来做到这一点,但这会增加额外的列索引。

jupyter notebook代码运行选项InteractiveShell.ast_node_interactivity = "all"):

import pandas as pd

df = pd.DataFrame([[l+r*10 for l in range(1, 5)] for r in range(1, 5)])

df # before

df.set_index(0, inplace=True)

df # after

set_index()之前的数据帧

before set_index()

set_index()之后的数据帧

after set_index()

问题是,为什么要创建第二个索引,以及如何将其删除? set_index() docs没有提及有关正在创建的子索引的任何信息。

1 个答案:

答案 0 :(得分:1)

就像@ scott-boston一样,将显示索引名称,该索引名称在您的示例中为“ 0”。如果您想删除它,只需使用:

del df.index.name

因此,您的完整代码为:

import pandas as pd

df = pd.DataFrame([[l+r*10 for l in range(1, 5)] for r in range(1, 5)])

df # before

df.set_index(0, inplace=True)
del df.index.name

df # after