Angenommen, ich habe einen Pandas DataFrame mit MultiIndex in Zeilen. Wie kann ich Zeilen basierend auf dem Wert einer der Ebenen des Index basierend auf mehreren Kriterien löschen?Löschen von Zeilen Pandas Dataframe basierend auf Index (mehrere Kriterien) (Python 3.5.1)
Beispiel: Angenommen, ich habe
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
ich alle Zeilen gelöscht werden soll, wo das county
Niveau des Index NaN ist und auch zu löschen, wenn es gleich ‚D‘ ist und ‚G‘. Mit anderen Worten, ich mag mit einem Datenrahmen
population
state county
NJ A 100
B 200
D 400
CA E 500
F 600
ist also folgende Art von Arbeiten am Ende:
df = df.iloc[df.index.get_level_values('county') != 'D']
df = df.iloc[df.index.get_level_values('county') != 'G']
Aber das Problem ist, dass in meinem realen Anwendungsfall gibt diese Kriterien mehrere ist. Außerdem kann ich keinen Weg finden, NaNs mit dieser Methode zu löschen.
Danke!