如何在SQL或Pandas中移除列名的引号与逗号等特殊字符?
问题
我尝试使用Python/SQLAlchemy从Snowflake表中拉取部分列到Pandas DataFrame,后续用Python/Pandas进行操作,但发现生成的DataFrame列名带有引号。相关代码如下:
sql = '''SELECT 'concept_name', 'ndc' FROM db.schema.tbl''' df = pd.read_sql(sql, conn) df.columns.to_list() #print out column names
执行后列名输出为:["'CONCEPT_NAME'", "'NDC'"],请问如何在SQL本身或Pandas中移除每个列名中的特殊字符?
解决方法
方法一:修改SQL语句(推荐)
你在SQL里用单引号包裹列名的操作,本质是把字符串字面量当成了列名,这才导致返回的列名自带引号。正确的做法是直接写列名,无需额外包裹:
SELECT concept_name, ndc FROM db.schema.tbl
如果需要自定义列名(比如统一大小写),可以用AS指定别名:
-- 保留原列名大小写 SELECT concept_name AS concept_name, ndc AS ndc FROM db.schema.tbl -- 强制转为小写列名 SELECT concept_name AS concept_name_lower, ndc AS ndc_lower FROM db.schema.tbl
调整后查询返回的列名就不会带有引号了。
方法二:在Pandas中批量清理列名
如果已经获取了带引号的DataFrame,可以通过Pandas的字符串方法快速处理列名:
# 移除列名两端的单引号 df.columns = df.columns.str.strip("'") # 可选:同时将列名转为小写(按需调整) df.columns = df.columns.str.strip("'").str.lower() # 验证结果 print(df.columns.to_list()) # 输出: ['CONCEPT_NAME', 'NDC'] 或 ['concept_name', 'ndc']
内容的提问来源于stack exchange,提问作者veg2020
相关产品推荐
相关产品推荐

