Pandas:过滤在几个特定列中的任何一个中具有 Null/None/NaN 值的行

Win*_*ags 1 python filtering pandas

我有一个 csv 文件,其中有很多字符串"NULL",在几列中。

我想选择(过滤器),其具有行"NULL"价值的任何几个特定列。

例子:

["Firstname"]   ["Lastname"]    ["Profession"]
"Jeff"          "Goldblum"      "NULL"
"NULL"          "Coltrane"      "Musician"
"Richard"       "NULL"          "Physicist"
Run Code Online (Sandbox Code Playgroud)

在这里,我想过滤(选择)列中df具有值"NULL"的行"Firstname" "Lastname"– 但如果值"NULL""Profession".

这设法None在一列中过滤字符串(不是):

df = df[df["Firstname"].str.contains("NULL", case=False)]
Run Code Online (Sandbox Code Playgroud)


然而,我试图将"NULL"字符串转换为None通过:

df = df.where((pd.notnull(df)), None)
df.columns = df.columns.str.lower()
Run Code Online (Sandbox Code Playgroud)

鉴于上述str.contains过滤,也许"NULL"在转换为None?

jez*_*ael 5

我认为你需要第一个字符串到. 然后检查所选列中的所有值 by并选择所有行,其中by :replace NULLNaNNaNisnullany Trueboolean 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
Run Code Online (Sandbox Code Playgroud)