如何从Pandas数据框架的多级列索引中删除一个级别

如何从Pandas数据框架的多级列索引中删除一个级别

在这篇文章中,我们将学习如何从一个多级列索引中删除一个级别。但是在这之前,我们需要知道什么是多级索引。多级索引数据框架是一种包含多级或分层索引的数据框架类型。
在这篇文章中,我们将创建一个我们自己选择的具有多列索引的数据框架,然后我们将把我们的分层索引丢掉一个级别。

分步实施

让我们在一个例子的帮助下,用逐步实现的方式来理解这一点。

第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)

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

第3步:删除数据框架的级别

现在,一个多级列索引数据框架已经用python创建。现在让我们来实现上述概念。我们需要删除一个级别。我们可以使用df.columns.droplevel(level=0)来实现。这可以帮助我们从索引0的顶部删除一个索引级别。

# Dropping a level down
df.columns = df.columns.droplevel(0)

第4步:显示所需的结果

print(df)

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

因此,我们已经能够成功地删除一级索引列。

让我们再看看基于上述方法的一些例子。

示例 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)

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

现在,如果我们想用指数2来降低水平,那么让我们看看会发生什么吧!

# Dropping a level number 2
df.columns = df.columns.droplevel(2)
print(df)

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

因此,我们可以观察到,在多级列索引中,我们已经成功地删除了索引号为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)

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

正如我们所看到的,每一个数组列表都是按列包含索引的。所以,三个数组意味着三列,数组中的值的数量是指行的数量。现在让我们从数据框架中删除多个索引。我们可以使用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。

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

因此,第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)

输出:

如何从Pandas数据框架的多级列索引中删除一个级别?

现在让我们分别移除第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数据框架的多级列索引中删除一个级别?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程