如何用Polars的select和alias更高效可读地计算DataFrame行均值?
当然可以,用
select()和alias()能让代码更简洁可读,性能也有保障 你的代码可以改写成这样:
import polars as pl df = pl.DataFrame( { "nrs": [1, 2, 3, None, 5], "names": [1., 2., 3., None, 5], } ) # 用select结合mean_horizontal和alias直接生成目标列 mean_df = df.select(pl.mean_horizontal(['nrs', 'names']).alias('mean'))
为什么这样更好?
- 可读性提升:
- 用
mean_horizontal明确表示是行方向的均值计算,比axis=1更直观,一眼就能看懂操作意图。 - 整个逻辑在
select操作里完成,直接生成带目标列的DataFrame,不需要额外调用to_frame,代码结构更紧凑。
- 用
- 性能保障:
- Polars对
mean_horizontal这类水平聚合函数做了专门优化,执行效率和df.mean(axis=1)相当,复杂场景下表现更稳定。 - 减少了中间Series转DataFrame的步骤,避免了不必要的数据转换开销。
- Polars对
如果需要保留原DataFrame的其他列同时新增mean列,也可以用with_columns:
df_with_mean = df.with_columns(pl.mean_horizontal(['nrs', 'names']).alias('mean'))
内容的提问来源于stack exchange,提问作者吴慈霆
相关产品推荐
相关产品推荐

