假设我有一个Pandas 数据框,如下所示(有数百万行)-

data = {'s3_path': ['s3://mybucket/date=2023-10-26/f1.txt', 's3://mybucket/date=2023-10-25/f2.txt', 's3://mybucket/date=2023-10-24/f3.txt', 's3://mybucket/date=2023-10-23/f4.txt']}
df = pd.DataFrame(data)

我想过滤2023-10-24之前的S3路径.在大Pandas 身上做到这一点的有效方法是什么?我对Pandas 了解不多,能想到的如下,但还不完整:

date_cutoff_str = '2023-10-24'
date_cutoff_obj = datetime.strptime(date_cutoff_str, '%Y-%m-%d')

def is_before(cur_date, cutoff_date):
    if cur_date < cutoff_date:
        True
    return False

date_regex_pattern = r'\d{4}-\d{2}-\d{2}'
filtered_df = df.apply(is_before, cur_date=how_do_i_get_regex_value_here, cutoff_date=date_cutoff_obj)

如有任何建议/答复,我们将不胜感激.谢谢.

推荐答案

一种可能的解决方案是使用正则表达式将日期提取为字符串,然后将其转换为datetime以与2023-10-24进行比较:

df.loc[
    pd.to_datetime(
        df['s3_path'].str.extract(r'date=(\d{4}-\d{2}-\d{2})')[0])
    .lt('2023-10-24')]

输出:

                                s3_path
3  s3://mybucket/date=2023-10-23/f4.txt

Python相关问答推荐

尽管进程输出错误消息,subProcess.check_call的CalledProcess错误.stderr为无

pyautogui.locateOnScreen在Linux上的工作方式有所不同

Odoo -无法比较使用@api.depends设置计算字段的日期

在Python和matlab中显示不同 colored颜色 的图像

对Numpy函数进行载体化

Django管理面板显示字段最大长度而不是字段名称

在Pandas DataFrame操作中用链接替换'方法的更有效方法

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

如何让程序打印新段落上的每一行?

用Python解密Java加密文件

计算组中唯一值的数量

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

pandas:排序多级列

将JSON对象转换为Dataframe

启动带有参数的Python NTFS会导致文件路径混乱

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

dask无groupby(ddf. agg([min,max])?''''

将标签移动到matplotlib饼图中楔形块的开始处

从旋转的DF查询非NaN值

当单元测试失败时,是否有一个惯例会抛出许多类似的错误消息?