Python移除DataFrame列前置撇号,解决谷歌表格Query空输出问题
解决Google Sheets日期列前置撇号导致Query失效的问题
问题根源
你看到的前置撇号并非数据本身包含的字符,是Google Sheets把字符串格式的日期自动标记为文本时添加的显示符号——点击单元格看到的撇号是Sheets的格式提示,实际数据里根本没有,所以你在Python里用replace、strip这类方法自然无效。
方案一:Python端直接上传datetime类型(推荐)
别把日期转成字符串,直接保留datetime对象上传,Google Sheets会自动识别为日期格式,彻底解决文本标记问题。修改你的Python代码:
import datetime # 转换为datetime对象,不要转成字符串格式 df_orders['orderDate'] = df_orders['orderDate'].apply(lambda d: datetime.datetime.fromtimestamp(int(d)/1000)) # 整数列处理逻辑保持不变 df_orders['orderLineQuantity.amount'] = df_orders['orderLineQuantity.amount'].str.replace(r"[\"\',]", '') df_orders['orderLineQuantity.amount'] = df_orders['orderLineQuantity.amount'].astype(int)
上传后Sheets会自动把orderDate列识别为日期格式,无需额外处理,原Query公式就能正常运行。
方案二:在Google Sheets端转换文本为日期
如果没法修改Python代码,直接在Query公式里把文本列转成日期即可:
=QUERY(IMPORTRANGE("link_to_the_Spreadsheet", "ORDERS!A2:J"), "SELECT SUM(Col6) WHERE DATEVALUE(Col1) >= date '2023-03-01' AND DATEVALUE(Col1) <= date '2023-03-05' LABEL SUM(Col6) ''")
用DATEVALUE(Col1)把文本格式的日期字符串转为日期类型,就能和Query的date条件匹配。
验证小技巧
- 上传后选中
orderDate列,手动设置格式为「日期」:如果是真实日期格式,格式会直接生效;如果是文本,格式不会变化。 - 用
TYPE(A2)函数验证单元格类型:返回1代表是数字/日期,返回2代表是文本。
内容的提问来源于stack exchange,提问作者sandibaeva52
相关产品推荐
相关产品推荐

