Python – 从多索引 Pandas Dataframe 中删除特定行

Python – 从多索引 Pandas Dataframe 中删除特定行

在 Pandas 中,可以使用多索引来进行数据分组和分类。但有时候,我们需要从多索引 Dataframe 中删除特定的行,这就需要用到一些 Pandas 中的函数。

更多Pandas相关文章,请阅读:Pandas 教程

使用.drop()删除行

Pandas 中的 .drop() 函数可以删除 Dataframe 中的行或列。可以通过 axis 参数来指定要删除的轴,inplace 参数用于指定是否要修改原来的 Dataframe。

下面是一个包含多索引的示例 Dataframe:

import pandas as pd

data = {
    ('A', 1): [1, 2, 3, 4],
    ('A', 2): [5, 6, 7, 8],
    ('B', 1): [9, 10, 11, 12],
    ('B', 2): [13, 14, 15, 16]
}

df = pd.DataFrame(data)
print(df)

输出结果:

   A     B    
   1  2   1   2
0  1  5   9  13
1  2  6  10  14
2  3  7  11  15
3  4  8  12  16

假设我们要删除第一列“1”,可以使用以下代码:

df.drop(('A', 1), axis=1, inplace=True)
print(df)

输出结果:

   A     B    
   2   1   2
0  5   9  13
1  6  10  14
2  7  11  15
3  8  12  16

使用.loc[]删除行

除了 .drop(),还可以使用 .loc[] 来删除特定的行。.loc[] 的用途是根据行标签或条件筛选行。下面是一个从文件中读取的示例 Dataframe:

df = pd.read_csv('data.csv', index_col=['Name', 'Age'])
print(df)

输出结果:

           Gender Department    Salary
Name  Age                             
Alice 25.0      F         HR   50000.0
      26.0      F         CS   60000.0
Bob   27.0      M         IT   45000.0
Charlie 23.0   M         HR   65000.0
       30.0  NaN         CS  100000.0

我们要删除行标签为('Alice', 25.0)的那一行,可以使用以下代码:

df.drop(('Alice', 25.0), inplace=True)
print(df)

输出结果:

           Gender Department    Salary
Name  Age                             
Alice 26.0      F         CS   60000.0
Bob   27.0      M         IT   45000.0
Charlie 23.0   M         HR   65000.0
       30.0  NaN         CS  100000.0

如果要删除多个行,可以使用一个包含行标签的列表作为.loc[]的参数,例如:

df.drop(labels=[('Alice', 26.0), ('Bob', 27.0)], inplace=True)
print(df)

输出结果:

           Gender Department    Salary
Name      Age                         
Charlie 23.0     M         HR   65000.0
         30.0   NaN         CS  100000.0

结论

使用 Pandas 的 .drop().loc[] 函数可以方便地从多索引 Dataframe 中删除特定的行,使数据处理更加灵活。在删除行之前,需要对行标签或条件进行仔细选择,以免删除了重要的数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 教程