如何使用pandas在Excel中查找空单元格?

6

我是新手,对于pandas我不知道这是否是一个愚蠢的问题。

如何使if语句检测到空单元格并在为true时运行代码。

例如:

if (blank_cell_found):
    execute_code

我尝试使用 if cell is None,但是我的if语句没有响应。

我正在使用数组来存储pandas列,我知道可能有更好的方法来做到这一点,但像我说的,我还是新手。

所以假设我的Excel表格看起来像这样:

  A          B              
Name1    LastName1                       
Name2                  
Name3    LastName3                  
Name4    LastName4  

我的代码:

xls = pd.ExcelFile('File.xlsx')
df = pd.read_excel(xls, 'Sheet1')

LastName = df['B'].values

for Array in LastName:
    if Array is None:
        print('Cell is empty')

当我运行这段代码时,希望在控制台中得到响应,但实际上没有任何响应。我尝试了 Array == ""Array == LastName[1],以查看是否会得到任何响应,但仍然没有反应。如果有更简单的方法来完成这个任务,那就太好了。

尝试使用 if pandas.isna(Array) 的方式,顺便说一下,这是一种相当低效的方法。您期望的输出是什么?只需打印与空单元格数相同的次数的 Cell is empty 即可。 - Chris
目前我只是想触发我的if语句,Cell is empty现在只是一个占位符。我想做的是:if (cell is empty):`drop index` - John Zapanta
“drop index” 指如果任何单元格为空,则删除整行?那么只使用 df.dropna(subset='B') 呢? - Chris
不,我想保留这一列。我想要删除任何具有不完整数据的行。 - John Zapanta
df.dropna(subset=['B']) 将会执行这个操作。这里的 subset 被用作一个条件。换句话说,只有当列 B 的单元格为空时,才会删除行:如果行中列 A 有空单元格,则 dropna(subset=['B']) 不会删除任何内容。 - Chris
如果可以的话,您能否使用我的示例代码给出一个例子呢?谢谢。 - John Zapanta
3个回答

4

如果您在Excel中的单元格完全为空,则打印Array变量将输出“nan”。因此,如果它包含nan,则检查:

import pandas as pd

if pd.isnull(Array):

如果上面的方法不起作用,那么可能有空格,请尝试:

if Array.strip() == "":

3
尝试使用numpy库中的isnan()函数。
import numpy as np

for Array in LastName:
    if np.isnan(Array):
        print('Cell is empty')

1
根据评论,OP希望在行中存在空单元格(即Pandas中的NaN)时删除

使用修改后的版本来自OP的示例数据(请注意,我添加了最后一行,其中列A也有空单元格):

print(df)
       A          B
0  Name1  LastName1
1  Name2        
2  Name3  LastName3
3  Name4  LastName4
4         LastName5

使用 df.dropna() 将会删除任何一行,如果有任何对应的列存在空单元格:
       A          B
0  Name1  LastName1
2  Name3  LastName3 <<< row 1 is dropped 
3  Name4  LastName4 <<< row 4 is dropped

使用df.dropna(subset=['B'])将仅在列B存在空单元格时删除:
       A          B
0  Name1  LastName1
2  Name3  LastName3 <<< row 1 is dropped since (2, 'B') was empty
3  Name4  LastName4
4    NaN  LastName5 <<< row 4 is not dropped since dropna is only looking at 'B'

谢谢你的示例,我现在明白了。另外,你知道哪些地方可以阅读有关Pandas的文章以便更好地理解它吗? - John Zapanta
1
@JohnZapanta pandas为学习者提供了一个很棒的页面。请查看Tutorials10 minutes to pandas - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接