【问题标题】:How to find blank cells in excel using pandas?如何使用熊猫在excel中查找空白单元格?
【发布时间】:2019-12-12 14:09:31
【问题描述】:

我是熊猫新手,所以我不知道这是不是一个愚蠢的问题。

如何让 if 语句检测空白单元格并在为真时运行代码。

例如

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')

当我运行它时,我希望在 concole 中得到响应,但没有得到任何响应。

我尝试Array == ""Array == LastName[1] 看看我是否会得到任何回应,但仍然没有回应。

如果有更简单的方法可以做到这一点,我也将不胜感激。

【问题讨论】:

  • 尝试使用if pandas.isna(Array),顺便说一句,这样做的效率很低。你的预期输出是什么?只要有空单元格就打印多少次Cell is empty
  • 目前我只是想触发我的 if 语句,Cell is empty 现在只是一个占位符。我想做的是:if (cell is empty):drop index
  • drop index 如果任何单元格为空,则删除整行? df.dropna(subset='B') 怎么样?
  • 不,我想保留该专栏。我要删除任何数据不完整的行
  • df.dropna(subset=['B']) 会做到这一点。 subset 这里用作标准。换句话说,当且仅当列B 的单元格为空时才会删除行:如果行在A 列中有一个空单元格,dropna(subset=['B']) 将不会删除任何内容。

标签: python excel pandas


【解决方案1】:

尝试使用 numpy 库中的 isnan() 函数

import numpy as np

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

【讨论】:

    【解决方案2】:

    根据 cmets,如果有空单元格(即 pandas 中的 NaN),OP 希望删除 rows

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

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

    如果任何对应的列有空单元格,使用df.dropna() 将删除 any 行:

           A          B
    0  Name1  LastName1
    2  Name3  LastName3 <<< row 1 is dropped 
    3  Name4  LastName4 <<< row 4 is dropped
    

    如果B 列有空单元格,使用df.dropna(subset=['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 以更好地了解它吗?
    • @JohnZapanta pandas 为学习者提供了一个很棒的页面。检查Tutorials10 minutes to pandas
    【解决方案3】:

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

    import pandas as pd
    
    if pd.isnull(Array):
    

    如果上面的一个不起作用,那么可能会有空格,所以试试:

    if Array.strip() == "":
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-06
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      相关资源
      最近更新 更多