我有这个Pandas 的密码:

df['date_col'] = pd.to_datetime(df['date_col'], format='%Y-%m-%d')
row['date_col'] = pd.to_datetime(row['date_col'], format='%Y-%m-%d')

df = df[(df['groupby_col'] == row['groupby_col']) & 
        (row['date_col'] - df['date_col'] <= timedelta(days = 10)) & 
        (row['date_col'] - df['date_col'] > timedelta(days = 0))]

row['mean_col]' = df['price_col'].mean()

名称row 来自于这个函数是由lambda构造应用的事实.

我用两种类型的条件来细分df:

    1. 名为"GROUPBY_COL"的列上的值相等的条件,
    1. 基于具有时间戳的"date_col"列的时间范围的多个条件.

我非常确定使用filter是正确的模块:

df.filter(condition_1 & condition_2)

但我很难写出条件. 为了嵌入条件1,我必须嵌套筛选器条件还是 Select when是正确的? 我如何翻译timedelta条件? 我如何复制lambda方法?

推荐答案

如果没有测试数据,就很难理解您的示例. 但如果我try 创建一些样本数据

import polars as pl
import datetime

df = pl.DataFrame({
   "date_col": ['2023-01-01','2023-01-02', '2023-01-03'],
   "groupby_col": [1,2,3],
})

row = pl.DataFrame({
   "date_col": ['2023-01-07','2023-01-08', '2023-01-25'],
   "groupby_col": [1,2,3],
})

df = df.with_columns(pl.col('date_col').str.to_datetime().cast(pl.Date))
row = row.with_columns(pl.col('date_col').str.to_datetime().cast(pl.Date))

然后,您可以通过先连接两个数据帧,然后再进行过滤来对多个条件进行过滤:

(df
   .join(row, on=["groupby_col"])
   .filter(
       pl.col("date_col_right") - pl.col("date_col") >= datetime.timedelta(days=0),
       pl.col("date_col_right") - pl.col("date_col") < datetime.timedelta(days=10),
   ).drop('date_col_right')
)

shape: (2, 2)
┌────────────┬─────────────┐
│ date_col   ┆ groupby_col │
│ ---        ┆ ---         │
│ date       ┆ i64         │
╞════════════╪═════════════╡
│ 2023-01-01 ┆ 1           │
│ 2023-01-02 ┆ 2           │
└────────────┴─────────────┘

Python相关问答推荐

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

删除字符串中第一次出现单词后的所有内容

Python中绕y轴曲线的旋转

如何从需要点击/切换的网页中提取表格?

如何使用Numpy. stracards重新编写滚动和?

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

如何杀死一个进程,我的Python可执行文件以sudo启动?

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

Python Pandas—时间序列—时间戳缺失时间精确在00:00

在Python中控制列表中的数据步长

用fft计算指数复和代替求和来模拟衍射?

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

解决Geopandas和Altair中的正图和投影问题

删除Dataframe中的第一个空白行并重新索引列

类型对象';敌人';没有属性';损害';

启动线程时,Python键盘模块冻结/不工作

为什么在生成时间序列时,元组索引会超出范围?

通过外键Django创建从一个字段到其他字段的 Select 列表

更新-如何与一个我无法使用python获得的按钮进行交互-Selify?

极点在没有Groupby的情况下聚合