問題:要根據(jù)時(shí)間的小時(shí)選取出一定時(shí)間范圍內(nèi)的數(shù)據(jù)
解決思路:通過pandas庫中的loc()函數(shù)篩選出符合要求的數(shù)據(jù)
例:
df['時(shí)間']= pd.to_datetime(df['時(shí)間'],errors='coerce')#將excel表中的時(shí)間轉(zhuǎn)化成datatime型
df['小時(shí)'] = df['時(shí)間'].dt.hour.fillna(0).astype('int')#在表中添加一行小時(shí)數(shù),從時(shí)間中切割出來
運(yùn)行結(jié)果:
其實(shí)用df['時(shí)間’].dt.hour就可以實(shí)現(xiàn)切割出時(shí)間,其他類似dt.(year,month,day等)均可,前提是將時(shí)間類型轉(zhuǎn)化成datatime類型,因?yàn)?dt.只能對(duì)datatime型進(jìn)行處理,即不轉(zhuǎn)化不能使用該方法。
#選出符合要求的數(shù)據(jù)
def month_rersev(a):
return a == 8 or a == 9
df = df.loc[df['小時(shí)'].apply(month_rersev)]#將表中按照符合要求的數(shù)據(jù)選出來
運(yùn)行結(jié)果:
保存為新的excel表格我選擇用.to_excel('路徑.表名.xlsx’)函數(shù),直接保存為一個(gè)新的excel表格,但是會(huì)出現(xiàn)不符合要求的情況,如,將前面運(yùn)行結(jié)果的個(gè)數(shù)的序號(hào)也存入表格,時(shí)間存入之后顯示為#號(hào)。
解決方案:
with pd.ExcelWriter(r'D:\data\biao6.xlsx',engine='openpyxl',datetime_format='YYYY/MM/DD HH:mm:ss')as writer:
df.drop('小時(shí)',axis=1).to_excel(writer,index=False)
這里使用ExcelWriter函數(shù)來規(guī)范化輸入excel表格的日期時(shí)間格式,同時(shí)刪掉前面為了篩選數(shù)據(jù)生成的'小時(shí)’那列。
運(yùn)行結(jié)果:
wb=load_workbook(r'D:\data\biao7.xlsx')
for sheetname in wb.sheetnames:
ws=wb[sheetname]
# 調(diào)整列寬
ws.column_dimensions['B'].width= 20
wb.save(r'D:\data\biao7.xlsx')#這里路徑一定要和之前一樣,要不然保存到其他地方去了
運(yùn)行結(jié)果:
import pandas as pd
from openpyxl import load_workbook
from datetime import datetime
#選出符合要求的數(shù)據(jù)
def month_rersev(a):
return a == 8 or a == 9
df = pd.read_excel(r'D:\data\biao1.xlsx')
df['時(shí)間']= pd.to_datetime(df['時(shí)間'],errors='coerce')#將excel表中的時(shí)間轉(zhuǎn)化成datatime型
df['小時(shí)'] = df['時(shí)間'].dt.hour.fillna(0).astype('int')#在表中添加一行小時(shí)數(shù),從時(shí)間中切割出來
df = df.loc[df['小時(shí)'].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('小時(shí)',axis=1).to_excel(writer,index=False)
wb=load_workbook(r'D:\data\biao6.xlsx')
for sheetname in wb.sheetnames:
ws=wb[sheetname]
# 調(diào)整列寬
ws.column_dimensions['B'].width= 20
wb.save(r'D:\data\biao7.xlsx')
參考博客:https://blog.csdn.net/weixin_39927799/article/details/111287345
聯(lián)系客服