首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极地:如何增加年份作为文字?

极地:如何增加年份作为文字?
EN

Stack Overflow用户
提问于 2022-07-13 00:01:42
回答 1查看 87关注 0票数 0

我有一个极坐标LazyFrame,在应用了几个函数之后,看起来如下所示:

代码语言:javascript
复制
┌───────────────┬──────────────┬─────────────────────────┬──────────────────────────┐
│ citing_patent ┆ cited_patent ┆ cited_patent_issue_date ┆ citing_patent_issue_date │
│ ---           ┆ ---          ┆ ---                     ┆ ---                      │
│ str           ┆ str          ┆ date                    ┆ date                     │
╞═══════════════╪══════════════╪═════════════════════════╪══════════════════════════╡
│ X             ┆ A            ┆ 2000-10-20              ┆ 2001-02-08               │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ X             ┆ B            ┆ 1999-08-04              ┆ 2001-02-08               │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Y             ┆ B            ┆ 1999-08-04              ┆ 2004-06-04               │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ N             ┆ A            ┆ 2000-10-20              ┆ 2021-12-20               │
└───────────────┴──────────────┴─────────────────────────┴──────────────────────────┘

我想按cited_patent对其进行分组,并在cited_patent_issue_date之后的三年内为citing_patent的数量设置一列。

在阅读15741618之后,我尝试使用dateutil.relativedelta

下面是我到目前为止掌握的代码:

代码语言:javascript
复制
.groupby("cited_patent")
.agg(
    [
        pl.col("cited_patent_issue_date").first(),
        (pl.col("citing_patent_issue_date") <= pl.col("cited_patent_issue_date").first() + relativedelta(years=3)).sum()
    ]
)

但是,这不起作用,因为我得到了一个错误:

代码语言:javascript
复制
pyo3_runtime.PanicException: could not convert value relativedelta(years=+3) as a Literal

我好像在这上面找不到别的东西了,所以我有点卡住了。

在极地中增加年份的推荐方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-13 00:22:19

您可以使用offset_by函数。从这些数据开始:

代码语言:javascript
复制
import polars as pl

df = pl.DataFrame(
    {
        "citing_patent": ["X", "X", "Y", "N"],
        "cited_patent": ["A", "B", "B", "A"],
        "cited_patent_issue_date": [
            "2000-10-20",
            "1999-08-04",
            "1999-08-04",
            "2000-10-20",
        ],
        "citing_patent_issue_date": [
            "2001-02-08",
            "2001-02-08",
            "2004-06-04",
            "2021-12-20",
        ],
    }
).with_columns(pl.col("^.*_date$").str.strptime(pl.Date))
df
代码语言:javascript
复制
shape: (4, 4)
┌───────────────┬──────────────┬─────────────────────────┬──────────────────────────┐
│ citing_patent ┆ cited_patent ┆ cited_patent_issue_date ┆ citing_patent_issue_date │
│ ---           ┆ ---          ┆ ---                     ┆ ---                      │
│ str           ┆ str          ┆ date                    ┆ date                     │
╞═══════════════╪══════════════╪═════════════════════════╪══════════════════════════╡
│ X             ┆ A            ┆ 2000-10-20              ┆ 2001-02-08               │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ X             ┆ B            ┆ 1999-08-04              ┆ 2001-02-08               │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Y             ┆ B            ┆ 1999-08-04              ┆ 2004-06-04               │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ N             ┆ A            ┆ 2000-10-20              ┆ 2021-12-20               │
└───────────────┴──────────────┴─────────────────────────┴──────────────────────────┘

我们可以将offset_by3y结合使用。请注意,它位于极性中日期时间表达式的dt命名空间之下。

代码语言:javascript
复制
(
    df.groupby("cited_patent").agg(
        [
            pl.col("cited_patent_issue_date").first(),
            (
                pl.col("citing_patent_issue_date")
                <= pl.col("cited_patent_issue_date").first().dt.offset_by('3y')
            ).sum(),
        ]
    )
)
代码语言:javascript
复制
shape: (2, 3)
┌──────────────┬─────────────────────────┬──────────────────────────┐
│ cited_patent ┆ cited_patent_issue_date ┆ citing_patent_issue_date │
│ ---          ┆ ---                     ┆ ---                      │
│ str          ┆ date                    ┆ u32                      │
╞══════════════╪═════════════════════════╪══════════════════════════╡
│ B            ┆ 1999-08-04              ┆ 1                        │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ A            ┆ 2000-10-20              ┆ 1                        │
└──────────────┴─────────────────────────┴──────────────────────────┘
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72959525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档