让我们在一个例子的帮助下,用逐步实现的方式来理解这一点。
第1步:导入所有需要的库
# importing all important libraries
import pandas as pd
步骤2:创建一个多级列索引的Pandas Dataframe并显示它
我们正在使用MultiIndex.from_tuples()创建一个多索引列,它可以帮助我们创建一个又一个的多索引,而且是按列创建。之后,我们使用pd.Dataframe()
来创建数据,并将其转换为表格格式,将列名作为多级索引。另外,我们正在使用df.index.Dataframe()
改变表的索引名称。
# Creating a multilevel index
index = pd.MultiIndex.from_tuples([("Group 1", "Group 1"),
("Group 1", "Group 2"),
("Group 3","Group 3")])
# Creating a pandas dataframe with
# multilevel-column indexing
df = pd.DataFrame([["Ross","Joey","Chandler"],
["Rachel","","Monica"]],
columns=index)
# Labelling the dataframe index.
index = df. index
index. name = "F.R.I.E.N.D.S"
# Showing the above multi-index column
# dataframe
print(df)
第3步:删除数据框架的级别
现在,一个多级列索引数据框架已经用python创建。现在让我们来实现上述概念。我们需要删除一个级别。我们可以使用df.columns.droplevel(level=0)
来实现。这可以帮助我们从索引0的顶部删除一个索引级别。
# Dropping a level down
df.columns = df.columns.droplevel(0)
第4步:显示所需的结果
print(df)
因此,我们已经能够成功地删除一级索引列。
让我们再看看基于上述方法的一些例子。
示例 1:
在下一个例子中,我们将从多级列索引中的一个特定索引中删除一个级别。这可以用我们之前使用的相同的语法来完成[ df.columns.droplevel(level=0)]
,如果我们指定了级别数,那么下面的索引就会根据基于零的索引被删除。所以,让我们转向这个概念的实现。
# importing all important libraries
import pandas as pd
# Creating a multilevel index
index = pd.MultiIndex.from_tuples([("Company A", "Company B","Company C"),
("Company A", "Company A","Company B"),
("Company A","Company B","Company C")])
# Creating a pandas dataframe with
# multilevel-column indexing
df = pd.DataFrame([["Atreyi","Digangana","Sohom"],
["Sujit","Bjon","Rajshekhar"],
["Debosmita","Shatabdi",""]],
columns=index)
# Labelling the dataframe index.
index = df. index
index. name = "ECE Placement"
# Showing the above multi-index column
# dataframe
print(df)
现在,如果我们想用指数2来降低水平,那么让我们看看会发生什么吧!
# Dropping a level number 2
df.columns = df.columns.droplevel(2)
print(df)
因此,我们可以观察到,在多级列索引中,我们已经成功地删除了索引号为2的那一级。
示例 2:
在这个例子中,我们将实现多级索引的更多概念。我们将在同一时间删除多个级别。
# importing all important libraries
import pandas as pd
# Creating a multilevel index
index = pd.MultiIndex.from_tuples([("Company A", "Company B", "Company C"),
("Company A", "Company A", "Company B"),
("Company A", "Company B", "Company C")])
# Creating a pandas dataframe with
# multilevel-column indexing
df = pd.DataFrame([["Atreyi", "Digangana", "Sohom"],
["Sujit", "Bjon", "Rajshekhar"],
["Debosmita", "Shatabdi", ""]],
columns=index)
# Labelling the dataframe index.
index = df. index
index. name = "ECE Placement"
# Showing the above multi-index column
# dataframe
print(df)
正如我们所看到的,每一个数组列表都是按列包含索引的。所以,三个数组意味着三列,数组中的值的数量是指行的数量。现在让我们从数据框架中删除多个索引。我们可以使用df.columns.droplevel(level=0)
多次调用它来实现。但这里有一个问题!
# Dropping a level down
df.columns = df.columns.droplevel(0)
# Dropping another level down
df.columns = df.columns.droplevel(0)
# Showing the dataframe
print(df)
我们可以看到,有两个级别为0的droplevel语句。 这是因为,在删除一个级别后,剩下的级别被重新排列。所以原来在索引1的级别现在会变成索引0,因此在这种情况下会写出多个droplevels。
因此,第0级和第1级被删除,我们只剩下第2级,现在被显示为第0级。
示例 3:
在最后一个例子中,让我们从数据框架的不同位置删除多个层次。
# importing all important libraries
import pandas as pd
# Creating a pandas dataframe
df = pd.DataFrame([["Coding", "System Design"],
["DBMS", "Aptitude"],
["Logical Reasoning", "Development"]])
# Creating multilevel index from tuples
df.columns = pd.MultiIndex.from_tuples([('Group 1', 'Group 2', 'Group 3', 'Group 4'),
('Group 3', 'Group 4', 'Group 5', 'Group 6')],
names=['level 1', 'level 2', 'level 3', 'level 4'])
# Showing the dataframe
print(df)
现在让我们分别移除第1层和第3层。
# Dropping a level down(Level 1)
df.columns = df.columns.droplevel(0)
# Dropping a level down after
# re-arrangement(Level 2)
df.columns = df.columns.droplevel(1)
# Showing the dataframe
print(df)
正如我们所看到的,在第一种情况下,我们已经从索引0下降了一个级别。在重新排列后,第2级现在将来到多级索引数据框架的0索引处。现在为了现在删除第3级,我们必须根据重新排列后的基于0的索引,将该级指定为1。现在2级和4级将显示在结果输出中。
- Pandas 索引
- 如何在Pandas中改变索引值如何从Pandas数据框架的多级列索引中删除一个级别如何扁平化Pandas DataFrame列中的分层索引如何使用 Pandas 的分层索引Python Pandas Index.all()Python Pandas Index.any()Python Pandas Index.append()Python Pandas Index.argmax()Python Pandas Index.argmin()Python Pandas Index.argsort()Python Pandas Index.asof()Python Pandas Index.astype()Python Pandas Index.contains()Python Pandas Index.copy()Python Pandas Index.dataPython Pandas Index.delete()Python Pandas Index.difference()Python Pandas Index.drop()Python Pandas Index.dropna()Python Pandas Index.drop_duplicates()Python Pandas Index.dtypePython Pandas Index.dtype_strPython Pandas Index.Doubleicated()Python Pandas Index.equals()Python Pandas Index.factize()Python Pandas Index.fillna()Python Pandas Index.flagsPython Pandas Index.get_duplicates()Python Pandas Index.get_loc()Python Pandas Index.get_slice_bound()Python Pandas Index.get_values()Python Pandas Index. hasnansPython Pandas Index.identical()Python Pandas Index.inferred_typePython Pandas Index.insert()Python Pandas Index.intersection()Python Pandas Index.isin()Python Pandas Index.isna()Python Pandas Index.isnull()Python Pandas Index.is_categorical()Python Pandas Index.is_monotonicPython Pandas Index.is_monotonic_decreasingPython Pandas Index.is_monotonic_increasingPython Pandas Index.is_uniquePython Pandas Index.itemsizePython Pandas Index.max()Python Pandas Index.memory_usage()Python Pandas Index.min()Python Pandas Index.nbytesPython Pandas Index.ndimPython Pandas Index.notna()Python Pandas Index.notnull()