如何在Polars中使用指定行的值设置列名?
如何在Polars中使用指定行的值设置列名?
嗨,我来帮你搞定这个问题!在Polars里其实有和Pandas一样直观的方式,完全不用纠结rename方法~
首先要提醒你一句:Polars的行索引是从0开始计数的,所以你说的df.row(8)对应的是第9行数据,如果是Excel里显示的第8行,那你得用df.row(7),这点别搞混了哦。
直接看具体操作:
提取目标行的值作为新列名
先把你想要设为列名的那一行数据转成列表:import polars as pl # 假设你已经读取Excel数据到df里了 new_column_names = df.row(8).tolist()给DataFrame设置新列名
和Pandas一样直接赋值就行,非常简单:df.columns = new_column_names删除原来的目标行
因为这一行现在已经是列名了,不需要留在数据里:df = df.drop(index=8)
如果想一步到位用方法链写,也可以这样更简洁:
df = ( pl.read_excel("你的文件路径.xlsx") .pipe(lambda d: d.with_columns(d.row(8).tolist())) .drop(index=8) )
另外,如果是刚开始读取Excel的时候就确定要把某一行当表头,还可以直接在读取时设置,更高效:
# 跳过前8行,把第9行作为表头(对应你说的row(8)) df = pl.read_excel("你的文件路径.xlsx", skip_rows=8, header=0)
这样操作是不是比用rename简单多了?完全符合你想要的便捷方式~
备注:内容来源于stack exchange,提问作者diogenes
相关产品推荐
相关产品推荐

