Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于索引删除数据帧中的行(多个条件)(Python 3.5.1)_Python_Pandas - Fatal编程技术网

基于索引删除数据帧中的行(多个条件)(Python 3.5.1)

基于索引删除数据帧中的行(多个条件)(Python 3.5.1),python,pandas,Python,Pandas,假设我有一个数据帧,行上有多个索引。如何根据基于多个条件的索引级别之一的值删除行 例如,假设我有 import pandas as pd df = {'population': [100, 200, 300, 400, 500, 600, 700, 800]} arrays = [['NJ', 'NJ', 'NY', 'NY', 'CA', 'CA', 'NV', 'NV'], ['A', 'B', None, 'D', 'E', 'F', None, 'G']] tupl

假设我有一个数据帧,行上有多个索引。如何根据基于多个条件的索引级别之一的值删除行

例如,假设我有

import pandas as pd

df = {'population': [100, 200, 300, 400, 500, 600, 700, 800]}
arrays = [['NJ', 'NJ', 'NY', 'NY', 'CA', 'CA', 'NV', 'NV'],
          ['A', 'B', None, 'D', 'E', 'F', None, 'G']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['state', 'county'])

df = pd.DataFrame(df, index=index)

                   population
state   county  
NJ        A          100
          B          200
NY        NaN        300
          D          400
CA        E          500
          F          600
NV        NaN        700
          G          800   
我想删除索引的
级别为NaN的所有行,并在它等于'D'和'G'时删除它。换句话说,我想以一个数据帧结束

                   population
state   county  
NJ        A          100
          B          200
          D          400
CA        E          500
          F          600  
因此,以下几类工作:

df = df.iloc[df.index.get_level_values('county') != 'D']
df = df.iloc[df.index.get_level_values('county') != 'G']
但问题是,在我的实际用例中,有几个标准。此外,我似乎找不到一种方法来删除南的使用这种方法

谢谢

level='county
上调用并传递列表,以删除该索引级别上具有这些值的行标签:

In [284]:
df.drop(['D','G',np.NaN], level='county')

Out[284]:
              population
state county            
NJ    A              100
      B              200
CA    E              500
      F              600

您可以尝试在布尔索引上使用反向运算符(~)。比如说,

import numpy as np
df[~(df.index.get_level_values('county').isin(['A', 'B', np.nan]))]
这行代码表示“从df中选择县不在某些列表中”