如何从Polars DataFrame中提取全局最大日期并保存到变量
获取Polars DataFrame中全局最新日期的方法
你需要从DataFrame的Values_A和Values_B两个日期列中提取全局最大的日期,这里提供几种高效的实现方式:
方法1:指定日期列取最大值后再全局比较
先单独获取两个日期列的最大值,再用Python内置的max()函数取两者中的较大值:
import polars as pl from datetime import datetime data = { "ID" : [1,2,3], "Values_A" : [datetime(1,1,2),datetime(1,1,3),datetime(1,1,4)], "Values_B" : [datetime(1,1,4),datetime(1,1,7),datetime(1,1,2)] } dummy_df = pl.DataFrame(data) # 获取两个日期列的最大值,再取全局最大 date_maxes = dummy_df.select(pl.col("Values_A").max(), pl.col("Values_B").max()).row(0) global_max_date = max(date_maxes) print(global_max_date) # 输出:0001-01-07 00:00:00
方法2:合并日期列后取最大值
如果你的日期列数量较多,用melt把所有日期列合并成单列,再取该列的最大值会更灵活:
# 合并日期列并提取最大值 global_max_date = dummy_df.melt( id_vars="ID", value_vars=["Values_A", "Values_B"] # 指定所有日期列 )["value"].max() print(global_max_date) # 输出:0001-01-07 00:00:00
方法3:用Polars原生表达式直接计算
利用Polars的max_horizontal和max组合,一步到位计算全局最大日期,这种方式更贴合Polars的向量化操作逻辑:
global_max_date = dummy_df.select( pl.max_horizontal(pl.col(["Values_A", "Values_B"])).max() ).item() print(global_max_date) # 输出:0001-01-07 00:00:00
以上三种方法都能得到你需要的全局最新日期,可根据实际日期列的数量和场景选择使用。
内容的提问来源于stack exchange,提问作者user24900119
相关产品推荐
相关产品推荐

