簡體   English   中英

如何使用時間戳過濾dask.dataframe.read_parquet?

[英]How do I filter dask.dataframe.read_parquet with timestamp?

我正在嘗試使用dask.dataframe.read_parquet方法讀取某些實木復合地板文件。 在數據中,我有一列名為timestamp ,其中包含諸如以下數據:

0     2018-12-20 19:00:00
1     2018-12-20 20:00:00
2     2018-12-20 21:00:00
3     2018-12-20 22:00:00
4     2018-12-20 23:00:00
5     2018-12-21 00:00:00
6     2018-12-21 01:00:00
7     2018-12-21 02:00:00
8     2018-12-21 03:00:00
9     2018-12-21 04:00:00
10    2018-12-21 05:00:00
11    2018-12-21 06:00:00
12    2018-12-21 07:00:00
13    2018-12-21 08:00:00
14    2018-12-21 09:00:00
15    2018-12-21 10:00:00
16    2018-12-21 11:00:00
17    2018-12-21 12:00:00
18    2018-12-21 13:00:00
19    2018-12-21 14:00:00
20    2018-12-21 15:00:00

我想根據時間戳進行過濾,然后返回過去10天內的數據。 我該怎么做呢?

我嘗試了類似的東西:

filter_timestamp_days = pd.Timestamp(datetime.today() - timedelta(days=days))
filters = [('timestamp', '>', filter_timestamp_days)]
df = dask_df.read_parquet(DATA_DIR, engine='pyarrow', filters=filters)

但是我得到了錯誤:

TypeError: Cannot compare type 'Timestamp' with type 'bytes_'

原來,問題出在我正在使用的數據源上。 我測試了最初用dask編寫的另一個數據源,它的工作原理如下:

filter_timestamp_days = pd.Timestamp(datetime.today() - timedelta(days=days))
filters = [('timestamp', '>', filter_timestamp_days)]
df = dask_df.read_parquet(DATA_DIR, engine='fastparquet', filters=filters)

我不需要進一步轉換filter_timestamp_days 以前的數據源是用Scala客戶端編寫的,似乎元數據在某種程度上難以理解。

謝謝大家的貢獻。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM