Pandas 从整个数据帧中删除特定的字符串值,而不指定列或行

Pandas 从整个数据帧中删除特定的字符串值,而不指定列或行,pandas,dataframe,Pandas,Dataframe,我有一个数据帧,它有一些值为“”的单元格。现在,每当我尝试使用多信息度量时,该值都会导致一个错误(“无法将字符串转换为浮点:?”) 我已经通过简单地使用以下方法找到了解决方案: df.replace("?",0,inplace=True) 但我想知道如果有一个单元格的值为“”,我是否要删除整行,我该怎么做 请注意,我没有包含此值的列名。它分散在不同的列中,这就是为什么我不能使用df.drop您可以通过以下方式执行此操作: df.drop(df.loc[df['column_

我有一个数据帧,它有一些值为“”的单元格。现在,每当我尝试使用多信息度量时,该值都会导致一个错误(“无法将字符串转换为浮点:?”)

我已经通过简单地使用以下方法找到了解决方案:

df.replace("?",0,inplace=True)
但我想知道如果有一个单元格的值为“”,我是否要删除整行,我该怎么做


请注意,我没有包含此值的列名。它分散在不同的列中,这就是为什么我不能使用
df.drop

您可以通过以下方式执行此操作:

df.drop(df.loc[df['column_name'] == "?"].index, inplace=True)
或者使用稍微简单的语法,但性能可能稍差一些:

df = df.loc[df['column_name'] != "?"]

您可以通过以下方式执行此操作:

df.drop(df.loc[df['column_name'] == "?"].index, inplace=True)
或者使用稍微简单的语法,但性能可能稍差一些:

df = df.loc[df['column_name'] != "?"]

您可以检查每个单元格是否等于
“?”
,然后在其任何单元格中包含该字符的行上获取布尔序列。然后获取给出
True
的行的索引,并将其删除:

has_ques_mark = df.eq("?").any(axis=1)            # a boolean series
inds = has_ques_mark[has_ques_mark].index         # row indices where above is True

new_df = df.drop(inds)

您可以检查每个单元格是否等于
“?”
,然后在其任何单元格中包含该字符的行上获取布尔序列。然后获取给出
True
的行的索引,并将其删除:

has_ques_mark = df.eq("?").any(axis=1)            # a boolean series
inds = has_ques_mark[has_ques_mark].index         # row indices where above is True

new_df = df.drop(inds)

不是
机器学习
问题,请不要垃圾邮件无关标签(已删除)。不是
机器学习
问题,请不要垃圾邮件无关标签(已删除).它工作得很好,也很简单。非常感谢Mustafa@Mohamed_Fergany很高兴能帮助你!如果你愿意的话,请考虑回答别人的问题,解决问题。它工作得很好,也很简单。多谢。Mustafa@Mohamed_Fergany很高兴能帮助你!如果你愿意,请考虑回答别人的信号。问题已经解决。感谢分享Sophos。但是我恐怕你没有注意到我问题中关于不知道列名的最后一部分。无论如何,我在上面的推荐中尝试了这个方法,并且成功了。再次感谢:)事实上,我没有。谢谢分享Sophos。但是我恐怕你没有注意到我问题中关于不知道列名的最后一部分。不管怎样,我在上面的推荐中尝试了这个方法,并且成功了。再次感谢:)事实上,我没有。