如何迭代每一行(每个单元格)并检查单元格是否包含值或nan,如果nan跳过行

时间:2021-01-06 07:33:32

标签: python excel pandas dataframe

我有这样的代码

for r in df.iterrows():
            try:
                if str(r[1][0]) !='nan' and str(r[1][1]) != 'nan' and str(r[1][2]) !='nan' and str(r[1][3]) !='nan' and str(r[1][4]) !='nan' and str(r[1][5]) !='nan':

我需要做的是检查每个单元格是否包含一个值然后只做操作否则我需要跳过该行,现在我正在使用'and'来检查每个单元格,但正如我们看到的那样列然后我需要放很多条件。

那么有没有什么快捷方式来检查(比如 map 或 lambda)?

1 个答案:

答案 0 :(得分:0)

当你使用 Pandas 时,我建议你不要考虑“迭代”,因为它的工作方式有点不同......

您应该为大多数场景寻找矢量化解决方案,因为与矢量化 numpy 和 Pandas 提供的矢量化相比,python 中的循环速度很慢...

解决方案

这是解决您的案例的示例。

如果您只想检查前 5 列:

df = df[df.iloc[:,0:5].dropna().index]

如果只有 5 行并且您想检查所有行,请执行以下操作:

df = df.dropna()

注意:以上将产生一个新的数据框,其中仅包含您期望的必要数据..您可以继续处理这个,请记住,为了使用此类库的特权,以下操作也应进行矢量化

>
相关问题