[英]Specifying dtype for parquet partition fields with 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.