pandas提取特定時間段資料

2021-09-28 15:08:45 字數 3870 閱讀 7198

這一段時間用python做資料統計,資料都存放在txt檔案中

這裡我的資料長這樣,總共24列

17592719043682383

0898

46010700

0034361

2017-05

-1901:

09:122017-05

-1901:

05:1913

1110466d3f609cb938dd153738103b0303 3

110.3645

20.0353

110.3665

20.0059

2017

0519

17592719302995383

0898

46010600

0035756

2017-05

-1902:

08:132017-05

-1902:

04:3817

1064469d36591de2366d4124291d411f02 3

110.3337

20.0652

110.3361

20.0364

2017

0519

17592719330238383

0898

46010800

0032828

2017-05

-1902:

35:162017-05

-1902:

33:079

76446a134591de8e2385848fd215f3602 3

110.3401

20.0081

110.3333

20.0222

2017

0519

17592720943629383

0898

46010500

0034854

2017-05

-1907:

49:192017-05

-1907:

47:2114

1164469c31591e3288b6b1ab452d31a102 3

110.2842

20.0071

110.3002

19.9818

2017

0519

17592721794216383

0898

46010800

0034478

2017-05

-1908:

13:322017-05

-1908:

10:5812

1210618ef5591e380f00007dbe49a914e0 3

110.3265

20.0297

110.3157

20.058

2017

0519

這裡我需要篩選2023年5月19日1點到3點之間的資料,主要用到第13列時間資料:

我想要提取2017-05-19 01:00:00到2017-05-19 03:00:00之間的資料,在網上找了好多**,都不是我想要的,最後通過不斷的修改,寫出了自己想要的**,話不多說,直接上原始碼:

import datetime

import pandas as pd

# 首先定義自己資料所在的路徑以及處理完資料後的輸出路徑

data_path =

'd:\\7.txt'

output_path1 =

'd:\\10月17日'

if __name__ ==

'__main__'

: # pandas讀取txt資料,這裡我的原來的資料是沒有表頭的,所以header為none,low_memory通俗理解就是只需要程式猜測你的資料格式一次,下面的資料都按照第一次猜測的來(我理解大概就是這個意思,嘿嘿嘿)

msg = pd.

read_table

(data_path,low_memory=false,header=none)

# 將資料的列重新命名,我的資料共有24列

msg.columns =

['1'

,'2'

,'3'

,'4'

,'5'

,'6'

,'7'

,'8'

,'9'

,'10'

,'11'

,'12'

,'13'

,'14'

,'15'

,'16'

,'17'

,'18'

,'19'

,'20'

,'21'

,'22'

,'23'

,'24'

]print

('---------索引分界線-----------'

)# 我將要處理的資料作為索引,這裡要處理的時間資料在第13列,將第三列設定為標準時間格式

msg[

'13'

]= pd.

to_datetime

(msg[

'13'])

msg = msg.

set_index

('13'

) # print

(msg)

# print

("開始寫入-----------"

)# 設定為乙個開始的時間日期,從5.19日零點開始

begin =datetime.

datetime

(2017,5

,19,0

,0,0

) # 結束時間為5.20零點(我是想將每個資料檔案中對應日期的每乙個小時的資料都提取出來)

end =begin + datetime.

timedelta

(hours=24)

# out = msg[

(msg[

'index'

]>= begin)

&(msg[

'index'

]<= end)

]# 迴圈的時候每次增加乙個小時

delta = datetime.

timedelta

(hours=1)

# 開始迴圈啦(覺得迴圈真是個好東西,我之前一條一條輸出的,被白眼嘲笑)

while begin < end:

a = begin

a = a.

strftime

("%y-%m-%d %h:%m:%s"

)print

("開始寫入"

+a) begin = begin + delta

begin1 = begin.

strftime

("%y-%m-%d %h:%m:%s"

)# 敲黑板,重點!!! 這裡將每一小時間隔的資料提取出來,a/begin1都必須是字串型別的,所以上邊要用strftime轉一下,最後儲存

msg[a:begin1]

.to_csv

(output_path1+

"\\"

+(begin1.

replace

(':',''

))+".txt"

,encoding=

'utf-8-sig'

,sep=

'\t'

,index=true,header=none)

這個程式能直接跑的喔 只要把你對應的資料改好就行。

要修改對應的地方:輸入輸出路徑,列索引,對應的時間

獲取時間段資料

create or replace function getdateduan vchussj varchar2,aflag varchar2 return integer as vdate date p nl str varchar2 20 p nl s number p nl y number p...

sql 查詢時間段資料

幾個小時內的資料 date sub now interval 5 hour 今天select from 表名 where to days 時間欄位名 to days now 昨天select from 表名 where to days now to days 時間欄位名 1 7天select fro...

mysql查詢特定時間段內的資料

建表語句 set foreign key checks 0 table structure for t user drop table if exists t user create table t user userid bigint 20 not null,fullname varchar 64...