在Azure Databricks中如何替换Pandas DataFrame列名字符串并移除前两位
报错原因
该报错和parquet格式存在关联:parquet的元数据规范支持存储非字符串类型的列标识,你从parquet文件加载数据生成Pandas DataFrame时,列名没有被自动转换为字符串类型,因此调用.str系列字符串方法时会触发类型错误。
解决方法
1. 先统一将所有列名转换为字符串类型
执行以下代码完成类型转换:
df.columns = df.columns.astype(str)
2. 实现移除列名前两个字符的需求
你之前使用的'T$'正则是匹配列名末尾的T做替换,不符合移除前两个字符的要求,直接用字符串切片即可:
df.columns = df.columns.str[2:]
如果需要兼容列名长度不足2的场景,避免生成空列名,可以用推导式写法:
df.columns = [col[2:] if len(col) >= 2 else col for col in df.columns.astype(str)]
验证修改结果
执行以下代码打印列名,确认修改符合预期:
print(df.columns.tolist())
内容的提问来源于stack exchange,提问作者EAG
相关产品推荐
相关产品推荐

