data = {"col1": ['2020/01/01', '2020/02/01'], "col2": ['2020/01/01', '2020/02/01']}
df = pl.DataFrame(data, schema={"col1": pl.Utf8, "col2": pl.Utf8})

df = df.with_columns(
    pl.col('col1').str.to_datetime(),
    pl.col('col2').str.to_datetime()
)

df.with_columns(
    pl.col(pl.DATETIME_DTYPES).dt.year()
)

使用给定的代码,我想用提取的年份为pl.DATETIME_DTYPES Select 的每一列创建新列.对于单个列,我会应用.alias(),但对于可能的102个新列,该怎么办呢?有generic种方法吗?

推荐答案

为此,您可以使用pl.Expr.name命名空间中的方法.最灵活的方法是pl.Expr.name.map,但也有pl.Expr.name.prefixpl.Expr.name.suffix等.

df.with_columns(
    pl.col(pl.DATETIME_DTYPES).dt.year().name.map(lambda s: s + "_year")
)

Output.

shape: (2, 4)
┌─────────────────────┬─────────────────────┬───────────┬───────────┐
│ col1                ┆ col2                ┆ col1_year ┆ col2_year │
│ ---                 ┆ ---                 ┆ ---       ┆ ---       │
│ datetime[μs]        ┆ datetime[μs]        ┆ i32       ┆ i32       │
╞═════════════════════╪═════════════════════╪═══════════╪═══════════╡
│ 2020-01-01 00:00:00 ┆ 2020-01-01 00:00:00 ┆ 2020      ┆ 2020      │
│ 2020-02-01 00:00:00 ┆ 2020-02-01 00:00:00 ┆ 2020      ┆ 2020      │
└─────────────────────┴─────────────────────┴───────────┴───────────┘

Python相关问答推荐

使用SciPy进行曲线匹配未能给出正确的匹配

如何使用symy打印方程?

rame中不兼容的d类型

从dict的列中分钟

梯度下降:简化要素集的运行时间比原始要素集长

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

名为__main__. py的Python模块在导入时不运行'

如何找出Pandas 图中的连续空值(NaN)?

用SymPy在Python中求解指数函数

如果包含特定值,则筛选Groupby

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

有没有办法在不先将文件写入内存的情况下做到这一点?

504未连接IB API TWS错误—即使API连接显示已接受''

如何设置nan值为numpy数组多条件

多索引数据帧到标准索引DF

EST格式的Azure数据库笔记本中的当前时间戳

将数据从一个单元格保存到Jupyter笔记本中的下一个单元格

Scipy.linprog的可行性有问题吗?(A_ub@x0<;=b_ub).all()为True-但是-linprog(np.zeros_like(X0),A_ub=A_ub,b_ub=b_ub)不可行

大Pandas 中的群体交叉融合

在Django REST框架中定义的URL获得404分