行にMultiIndexを持つPandas DataFrameがあるとします。複数の基準に基づいてインデックスのレベルの1つの値に基づいて行を削除するにはどうすればよいですか?例えば行を削除するpandasインデックスに基づくデータフレーム(複数の条件)(Python 3.5.1)
、Iは索引のcounty
レベルがNaNであるすべての行を削除しても、それは「D」及び「G」に等しい場合、それを削除する私は
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
を有していると仮定する。言い換えれば、私は、データフレーム
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']
しかし、問題は私の本当のユースケースでは、これらの基準のいくつかがあるということです。また、このメソッドを使用してNaNを削除する方法が見つからないようです。
ありがとうございます!