从多索引Pandas数据框架中删除特定的行

从多索引Pandas数据框架中删除特定的行

在这篇文章中,我们将学习如何从多指标数据框架中删除特定的行。

首先,让我们创建一个多指标的数据框架。其步骤如下。

import numpy as np
import pandas as pd
  
mldx_arrays = [np.array(['lion', 'lion', 'lion', 'bison',
                         'bison', 'bison', 'hawk', 'hawk',
                         'hawk']),
                 
               np.array(['height', 'weight', 'speed',
                         'height', 'weight', 'speed',
                         'height', 'weight', 'speed'])]
  
# creating a multi-index dataframe
# with random data
multiindex_df = pd.DataFrame(
  np.random.randn(9, 4), index=mldx_arrays,
  columns=['Type A', 'Type B', 'Type C', 'Type D'])
  
multiindex_df.index.names = ['level 0', 'level 1']
multiindex_df
Python

输出:

从多索引Pandas数据框架中删除特定的行

现在,我们必须从多索引数据框中删除一些行。所以,我们使用pandas模块提供的drop()方法。这个函数可以在pandas数据框架中删除行或列。

语法: df.drop(‘labels’, level=0, axis=0, inplace=True)

参数:

  • labels:引号中提到的参数是要删除的索引或列标签。
  • axis : 从行(当 axis=0 或 ‘index’)/列(当 axis=1 或 ‘columns’)删除标签的参数。
  • level:参数表示级别编号,如0,1等,以帮助识别和操作多指标数据框架中的特定级别数据。例如,在给定的例子中,有两个级别,即1级和2级。
  • inplace:参数,用于进行原地操作,如果其值为True则不返回。在所有的例子中,inplace的值都是True,这样它就会进行操作,然后不返回。

例子1:要在第0级中删除包含 “狮子 “的行。

这里’lion’是我们想要放弃的标签名称。

  • level=0, axis=0作为描述行将被删除的目标。
  • 在df.drop()函数中,inplace=True,这样它就执行了任务,并且不返回任何东西。
multiindex_df.drop('lion', level=0, axis=0, inplace=True)
multiindex_df
Python

输出:

从多索引Pandas数据框架中删除特定的行

例子2:要删除第1层中包含 “重量 “的行。

这里’weight’是我们想在第1级中从第0级的每一行中删除的标签名称。

  • level=1, axis=0作为描述行将被删除的目标。
  • 在df.drop()函数中,inplace=True,这样它就执行了任务,并且不返回任何东西。
multiindex_df.drop('weight', level=1, axis=0, inplace=True)
multiindex_df
Python

输出:

从多索引Pandas数据框架中删除特定的行

例子3:要在第1层的 “野牛 “内删除一个标签为 “重量 “的单行。

这里(’bison’, ‘weight’)是我们想从第0层和第1层分别删除的标签名称。它的意思很简单,只有第0层的标签’bison’的行,第1层的标签’weight’将被删除。不需要提及级别,因为它涉及到两个级别,所以只有引号内的标签名称可以正常工作。

  • 轴=0,说明行将成为删除的目标。
  • 在df.drop()函数中,inplace=True,这样它就执行了任务,并且不返回任何东西。
multiindex_df.drop(('bison', 'weight'), axis=0, inplace=True)
multiindex_df
Python

输出:

从多索引Pandas数据框架中删除特定的行

例子4:要从第0层删除两行。

这里(’bison’, ‘hawk’)是我们想从第0层删除的标签名称,它包含了第1层的多条记录。因此,删除第0层的行将导致第1层的相应行也被删除。

  • axis=0,因为它描述的是将被删除的行。
  • 在df.drop()函数中,inplace=True,这样它就执行了任务,并且不返回任何东西。
multiindex_df.drop(['bison', 'hawk'], axis=0, inplace=True)
multiindex_df
Python

输出 4:

从多索引Pandas数据框架中删除特定的行

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册