如何在Polars数据框中将所有列名改为小写且不重复数据
如何在Polars数据框中将所有列名改为小写且不重复数据
我来帮你搞定这个问题!你提到用with_columns(pl.all().name.to_lowercase())的方式会保留原列,导致数据重复,确实这个方法的作用是新增小写列而非直接修改原列名,所以会出现重复的情况。
想要直接重命名所有列到小写且不产生重复数据,我们可以换个思路:直接基于当前数据框的列名生成新旧名称的映射字典,再用rename方法处理,这样就完美解决问题了。
具体步骤示例:
- 先创建你的示例数据框:
import polars as pl df = pl.DataFrame([{'CCY': 'EUR', 'Qty': 123}, {'CCY': 'USD', 'Qty': 456}])
- 生成列名映射字典并执行重命名:
df = df.rename({col: col.lower() for col in df.columns})
这样操作后,数据框的列名就全部变成小写的ccy和qty了,而且不会保留原有的大写列,完全没有重复数据。
为什么这个方法可行?
df.columns会返回数据框所有列名的字符串列表,是可迭代的,刚好可以用来生成我们需要的映射字典。rename方法是Polars专门用来修改列名的API,它会返回一个修改了列名的新数据框(Polars默认是不可变的,所以需要重新赋值给变量),不会产生额外的重复列。
你之前尝试用pl.all()来遍历列是行不通的,因为pl.all()是一个表达式对象,不是列名的可迭代集合,而df.columns才是我们需要的列名列表。
备注:内容来源于stack exchange,提问作者Phil-ZXX
相关产品推荐
相关产品推荐

