我有一个csv文件,里面有很多名为"NULL"
的字符串,在几列中。
我想在几个特定列的任何中选择(过滤)"NULL"
个值的行。
示例:
["Firstname"] ["Lastname"] ["Profession"] "Jeff" "Goldblum" "NULL" "NULL" "Coltrane" "Musician" "Richard" "NULL" "Physicist"
在这里,我想过滤df
中"NULL"
或 {{1}列中值"Firstname"
的(选择)行} - 但如果"Lastname"
中的值为"NULL"
,则不会。
这设法在一列中过滤字符串(不是"Profession"
):
None
不过,我尝试通过以下方式将df = df[df["Firstname"].str.contains("NULL", case=False)]
字符串转换为"NULL"
None
鉴于上述df = df.where((pd.notnull(df)), None)
df.columns = df.columns.str.lower()
过滤,在转换为str.contains
之前,可能更容易在"NULL"
字符串中进行过滤?
答案 0 :(得分:3)
我认为首先需要replace
NULL
字符串NaN
。然后按isnull
检查所选列中的所有NaN
值,并按any
选择所有行boolean indexing
True
:
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 :(得分:1)
你可以尝试:
df.replace(to_replace="NULL", value = None)
将"NULL"
的所有出现替换为None