2016-10-04 1 views
1

複数の列に"NULL"という文字列がたくさんあるcsvファイルがあります。パンダ:いくつかの特定の列のNull/None/NaN値を持つ行のフィルタ

私はどののいくつかの具体的なの列に"NULL"値を持っている(でフィルタリングする)行を選択したいと思います。

例: - 値場合ではなく、ここで

["Firstname"] ["Lastname"] ["Profession"] 
"Jeff"   "Goldblum"  "NULL" 
"NULL"   "Coltrane"  "Musician" 
"Richard"  "NULL"   "Physicist" 

、私は列"Firstname"または"Lastname"に値"NULL"を持ってdfの行を(選択)でフィルタリングしたいと思います"Profession""NULL"です。

これは、1列に文字列(いない None)でフィルタリングするために管理し

:上記の

df = df.where((pd.notnull(df)), None) 
df.columns = df.columns.str.lower() 

:私はしかし経由None"NULL"文字列を変換しようと試みてきた

df = df[df["Firstname"].str.contains("NULL", case=False)] 


str.containsフィルタリングすると、おそらくに変換する前に"NULL"文字列をフィルタリングする方が簡単でしょうか?

答えて

2

"NULL"のすべての発生を置き換えるために、私はあなたがNaNへの最初のreplaceNULL文字列が必要だと思います。その後isnullによって選択された列内のすべてのNaNの値をチェックし、ここですべての行を選択anyTrueboolean indexingによって:

df = df.replace("NULL", np.nan) 

print (df[['Firstname','Lastname']].isnull()) 
    Firstname Lastname 
0  False False 
1  True False 
2  False  True 

print (df[df[['Firstname','Lastname']].isnull().any(1)]) 
    Firstname Lastname Profession 
1  NaN Coltrane Musician 
2 Richard  NaN Physicist 
1

あなたが試すことができます:

df.replace(to_replace="NULL", value = None) 

None

関連する問題