python对excel表根据列数据进行筛选以及对修改后表存储为excel表

筛选问题

问题:要根据时间的小时选取出一定时间范围内的数据
解决思路:通过pandas库中的loc()函数筛选出符合要求的数据
例:
在这里插入图片描述
要求选出在8-9点的数据,这里我们只需要将时间的小时数分割出来,保留为8和9的数据即可完成筛选

df['时间']= pd.to_datetime(df['时间'],errors='coerce')#将excel表中的时间转化成datatime型
df['小时'] = df['时间'].dt.hour.fillna(0).astype("int")#在表中添加一行小时数,从时间中切割出来

运行结果:
在这里插入图片描述

其实用df[‘时间’].dt.hour就可以实现切割出时间,其他类似dt.(year,month,day等)均可,前提是将时间类型转化成datatime类型,因为.dt.只能对datatime型进行处理,即不转化不能使用该方法。

#选出符合要求的数据
def month_rersev(a):
    return a == 8 or a == 9
df = df.loc[df['小时'].apply(month_rersev)]#将表中按照符合要求的数据选出来

运行结果:
在这里插入图片描述
根据该列中时间数据分割出小时,再用loc()函数进行筛选,筛选到此已经完成了。
但是如何将修改后的符合要求的数据存储到表格中?接下来是存储过程中可能出现的小问题。

保存为新的excel表格

保存为新的excel表格我选择用.to_excel(‘路径.表名.xlsx’)函数,直接保存为一个新的excel表格,但是会出现不符合要求的情况,如,将前面运行结果的个数的序号也存入表格,时间存入之后显示为#号。
解决方案:

with pd.ExcelWriter(r'D:\data\biao6.xlsx',engine='openpyxl',datetime_format='YYYY/MM/DD HH:mm:ss')as writer:
    df.drop('小时',axis=1).to_excel(writer,index=False)

这里使用ExcelWriter函数来规范化输入excel表格的日期时间格式,同时删掉前面为了筛选数据生成的‘小时’那列。

运行结果:
在这里插入图片描述
这里时间的输入依旧是#号,经过判断可知为单元格宽度不够导致显示全为#号,这里通过代码对单元格宽度进行设置

wb=load_workbook(r"D:\data\biao7.xlsx")
for sheetname in wb.sheetnames:
    ws=wb[sheetname]
    # 调整列宽
    ws.column_dimensions['B'].width=  20
wb.save(r"D:\data\biao7.xlsx")#这里路径一定要和之前一样,要不然保存到其他地方去了

运行结果:
在这里插入图片描述
完整代码:

import pandas as pd
from openpyxl import load_workbook
from datetime import datetime

#选出符合要求的数据
def month_rersev(a):
    return a == 8 or a == 9
df = pd.read_excel(r"D:\data\biao1.xlsx")
df['时间']= pd.to_datetime(df['时间'],errors='coerce')#将excel表中的时间转化成datatime型
df['小时'] = df['时间'].dt.hour.fillna(0).astype("int")#在表中添加一行小时数,从时间中切割出来


df = df.loc[df['小时'].apply(month_rersev)]

with pd.ExcelWriter(r'D:\data\biao7.xlsx',engine='openpyxl',datetime_format='YYYY/MM/DD HH:mm:ss')as writer:
    df.drop('小时',axis=1).to_excel(writer,index=False)


wb=load_workbook(r"D:\data\biao6.xlsx")
for sheetname in wb.sheetnames:
    ws=wb[sheetname]
    # 调整列宽
    ws.column_dimensions['B'].width=  20
  
wb.save(r"D:\data\biao7.xlsx")

参考博客:https://blog.csdn.net/weixin_39927799/article/details/111287345

  • 2
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用pandas库来筛选Excel格中的数据。根据引用\[2\]中的代码实现,你可以按照以下步骤进行筛选: 1. 首先,导入必要的库: ```python import pandas as pd import os ``` 2. 设置Excel文件的路径和保存筛选结果的文件夹路径: ```python filePath = "所有excel所在文件夹地址" outPath = "保存所有筛选excel的文件夹地址" ``` 3. 使用循环遍历文件夹中的所有Excel文件: ```python for file in os.listdir(filePath): file_csv = filePath + file df = pd.read_excel(file_csv, usecols=\[5, 6, 11\]) df = df.iloc\[1:\] ``` 4. 根据筛选条件进行数据筛选: ```python sift = pd.DataFrame() for i in range(200, 451): new = df.loc\[(df\['力'\].astype(float) >= (i - 0.1)) & (df\['力'\].astype(float) <= (i + 0.1))\] sift = pd.concat(\[sift, new\], axis=0) ``` 5. 将筛选结果保存为新的Excel文件: ```python out = "sift_" + file sift.to_excel(outPath + out) ``` 这样,你就可以根据指定的筛选条件对Excel进行筛选,并将筛选结果保存为新的Excel文件。请注意,你需要根据实际情况修改文件路径和筛选条件。 #### 引用[.reference_title] - *1* *3* [pythonexcel根据数据进行筛选以及对修改后表存储excel](https://blog.csdn.net/weixin_45868097/article/details/113445166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python---excel筛选](https://blog.csdn.net/weixin_43631804/article/details/126525735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值