如何用Polars将DataFrame其余行除以第一行并转为百分比?
Polars实现以第一行数据为基准计算百分比
首先定义原始DataFrame:
import polars as pl df = pl.DataFrame({ 'pme-site-paginas': [118,54,24,21,20,20,18], 'pme-midias-novo-empresas': [348,149,67,50,47,46,39], 'pme-site-claro-mais': [8,0,0,0,0,0,0] })
需求说明:将第一行数据视为100%基准,其余行的每列数据除以对应列的第一行值,得到百分比结果,这和Pandas中「按第一行数据进行逐列除法计算」的场景逻辑一致。
实现方法
通过Polars的with_columns(或select)结合first()方法即可完成计算,示例代码如下:
# 计算百分比并保留两位小数 df_percent = df.with_columns( [(pl.col(col) / pl.col(col).first() * 100).round(2).alias(col) for col in df.columns] ) # 输出结果 print(df_percent)
代码说明
pl.col(col).first():获取当前列的第一行基准值pl.col(col) / pl.col(col).first() * 100:将列中每个元素除以基准值并转为百分比round(2):保留两位小数,可根据需求调整位数with_columns:直接在原DataFrame结构上替换列值,若想生成新DataFrame可改用select方法
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

