【问题标题】:Filter on columns using read_parquet使用 read_parquet 过滤列
【发布时间】:2022-07-26 17:54:43
【问题描述】:

我需要根据数据框中的其他两个日期过滤日期列(数据框太大,无法加载它并在熊猫中照常执行),我使用了以下 sn-p 代码,但我不是能够在抛出错误时做到这一点:

filename = "df.parquet"
date_filters = [('current', '>=', 'start'), ('current', '<=', 'end')]

df = pd.read_parquet(filename, engine='pyarrow',filters=date_filters)

这是我得到的错误。

ArrowNotImplementedError: Function greater_equal has no kernel matching input types (array[timestamp[us]], scalar[string])

我想知道是否有其他方法可以做到这一点,因为我尝试加载的数据框非常大。

【问题讨论】:

    标签: python-3.x pandas parquet


    【解决方案1】:

    它以这种方式工作,

    from  datetime import datetime
    import pyarrow as pa
    filename = 'df.parquet'
    start = pa.scalar(datetime.strptime('2022-02-01 00:00:00', "%Y-%m-%d %H:%M:%S"))
    end = pa.scalar(datetime.strptime('2022-02-01 23:59:59', "%Y-%m-%d %H:%M:%S"))
    date_filters = [('current', '>=', start), ('current', '<=', end)]
    
    df = pd.read_parquet(filename, engine='pyarrow',filters=date_filters)
    df.head()
    
    

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2011-07-02
      • 2017-06-07
      • 2017-09-24
      相关资源
      最近更新 更多