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

  • Post category:Python

删除多索引Pandas数据框架中的特定行可以使用drop函数。下面是详细的步骤和实例:

第一步:创建一个多索引数据框架

我们先创建一个简单的多索引数据框架以便后续进行删除操作。代码如下:

import pandas as pd
import numpy as np

# 创建多级索引数据框架
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])
print(df)

输出结果如下:

                   A         B
first second                  
bar   one     -0.674817  0.783597
      two     -0.119831 -0.101167
baz   one     -0.835626 -0.555787
      two      1.295578 -1.389287
foo   one      0.754803 -0.022335
      two      0.583922  1.128333
qux   one     -0.729982 -0.116775
      two      0.128133 -0.062029

第二步:使用drop函数删除指定行

要删除特定行,需要使用drop函数,并设置行的索引。例如,删除’qux’的’two’行,代码如下:

df = df.drop(('qux', 'two'))
print(df)

输出结果如下:

                   A         B
first second                  
bar   one     -0.674817  0.783597
      two     -0.119831 -0.101167
baz   one     -0.835626 -0.555787
      two      1.295578 -1.389287
foo   one      0.754803 -0.022335
      two      0.583922  1.128333
qux   one     -0.729982 -0.116775

删除完成后,我们发现’qux’的’two’行已经被成功删除了。

如果要删除多个行,可以把需要删除的行的索引作为一个列表,然后传递给drop函数。例如,删除’foo’的’one’行和’qux’的’one’行,代码如下:

df = df.drop([('foo', 'one'), ('qux', 'one')])
print(df)

输出结果如下:

                   A         B
first second                  
bar   one     -0.674817  0.783597
      two     -0.119831 -0.101167
baz   one     -0.835626 -0.555787
      two      1.295578 -1.389287
foo   two      0.583922  1.128333

总结

使用以上方法,可以方便地从多索引Pandas数据框架中删除特定的行。需要注意的是,使用索引来删除行时,索引必须匹配才能删除成功。同时,drop函数会返回一个新的数据框架,需要将其赋值给原来的数据框架以实现删除操作。