Python Pandas按加载日期过滤

时间:2019-11-21 16:58:43

标签: python pandas

我已经阅读了几篇关于如何使用跳绳和块大小等思想逐步加载CSV的文章,但是没有什么适合我的特定用例。理想情况下,我希望可以像下推谓词那样工作。

我的csv大(860万行),只想加载过去一周的数据。文件中有一个指定日期的字段,我当前正在加载整个df,然后按日期进行过滤。我不确定是否可以完全跳过加载旧记录,但这是我的目标。可以吗?

编辑:这是我正在使用的代码:

import boto3

S3Client = boto3.client('s3','us-east-1')

obj = S3Client.get_object(Bucket = 'bucket_name', Key = 'some_key')
df = pd.read_csv(io.BytesIO(obj['Body'].read()))

,数据的格式如下:

|'Cust_ID'|'Type'|'Date_of_activity'|'Amount'|'Item_count'|'time_of_order'|
---------------------------------------------------------------------------
|1234     |OL    |12-12-2019        |1234    |10          |23:34          |
|5678     |IS    |12-12-2019        |8765    |50          |11:34          |
|9101     |OL    |12-13-2019        |1504    |17          |3:45           |

我正在针对2个单独的CSV进行此操作,每个CSV都有大约8-10百万条记录。

加载数据帧后,我正在进行一些连接,过滤和聚合,与仅使用标准CSV模块相比,这在熊猫中要容易得多。我不认为chunk_size会起作用,因为从我阅读的内容来看,它实际上不允许我根据'Date_of_activity'进行过滤,它一次只能加载一定数量的行。

基本上,情况是我们每周都会收到一次总的/完整的历史数据转储,而实际上,我们需要的只是前一周的订单。

1 个答案:

答案 0 :(得分:0)

您可以使用dask dataframe

它只会计算您明确告知的内容,而无需将整个数据帧加载到内存中。