python删除单元格值为“0”的一行

img


当excel的某一行有超过5个单元格的值为“0“时”,就删除这一整行的数据,表格大概有1万行数据,怎么能实现从第1行到第1万行的自动删除呢?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7705953
  • 这篇博客你也可以参考下:python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】
  • 您还可以看一下 曾贤志老师的【曾贤志】用Python处理Excel数据 - 第3季 正则篇课程中的 3.3 综合应用案例3:将不规范时间处理成规范时间小节, 巩固相关知识点
  • 除此之外, 这篇博客: python字符串及基本操作中的 1.字符串定义:由0个或者多个字符组成的有序字符序列。 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:
    解决方案

    根据你的需求,可以使用Python中的pandas库来处理Excel数据,具体步骤如下:

    1. 首先,需要安装pandas库。可以使用pip install pandas命令来安装pandas。

    2. 导入pandas库:

       import pandas as pd
    
    1. 使用pd.read_excel()函数读取Excel数据,并将数据存储到一个pandas的DataFrame对象中:
       data = pd.read_excel('your_file_path.xlsx')
    

    这里需要将'your_file_path.xlsx'替换为你实际的Excel文件路径。

    1. 统计每行中为0的单元格数量,可以使用DataFrame的eq()函数将每个单元格的值与0进行比较,并使用sum()函数计算每行中为0的单元格数量:
       zeros_count = data.eq(0).sum(axis=1)
    
    1. 删除所有超过5个值为0的行。可以使用DataFrame的drop()函数,并通过指定行的索引来删除行:
       data = data[zeros_count < 5]
    
    1. 最后,可以将处理后的数据保存回Excel文件。可以使用DataFrame的to_excel()函数将数据保存为Excel文件,并通过设置index=False来避免保存索引列:
       data.to_excel('output_file_path.xlsx', index=False)
    

    这里需要将'output_file_path.xlsx'替换为你希望保存的Excel文件路径。

    以下是总体代码示例:

    import pandas as pd
    
    # 读取Excel数据
    data = pd.read_excel('your_file_path.xlsx')
    
    # 统计每行中为0的单元格数量
    zeros_count = data.eq(0).sum(axis=1)
    
    # 删除所有超过5个值为0的行
    data = data[zeros_count < 5]
    
    # 将处理后的数据保存回Excel
    data.to_excel('output_file_path.xlsx', index=False)
    

    请根据上述示例代码和解决方案尝试实现你的需求,如果有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
from openpyxl import load_workbook

def delfunc(file_path):
    wb = load_workbook(file_path)
    sheet = wb.active

    for row in reversed(sheet.iter_rows(min_row=1, max_row=sheet.max_row)):
        zero_count = 0
        for cell in row:
            if cell.value == 0:
                zero_count += 1
        if zero_count > 5:
            sheet.delete_rows(row[0].row)

    wb.save(file_path)

# 调用函数并传入Excel文件路径
delfunc('你的 excel 文件.xlsx')

# install pandas, run in cmd
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pandas 
import pandas as pd

# read
data_raw = pd.read_csv('yourpathhere.csv')

# filt
data_filt = pd.DataFrame([i for i in data.values if i.tolist().count(0) + i.tolist().count('0') > 5], columns = data_raw.columns)

# save
data_filt.to_csv('yourtargetpathhere.csv', index = False)

from openpyxl import load_workbook

# 打开Excel文件
file_path = 'your_excel_file.xlsx'  # 将此处替换为您的Excel文件路径
workbook = load_workbook(filename=file_path)
sheet = workbook.active

# 定义删除条件
delete_row_count = 5  # 当某一行有超过5个单元格的值为"0"时,删除该行数据

# 遍历从第1行到第10000行
max_row = sheet.max_row
for row_index in range(1, max_row + 1):
    row_values = [cell.value for cell in sheet[row_index]]
    zero_count = row_values.count(0)

    if zero_count > delete_row_count:
        # 删除该行数据
        sheet.delete_rows(idx=row_index, amount=1)
        max_row -= 1  # 更新最大行数,因为删除了一行数据

# 保存修改后的Excel文件
workbook.save('modified_excel_file.xlsx')  # 将此处替换为您要保存的文件名

# 关闭Excel文件
workbook.close()