使用Pandas从谷歌表格动态提取前一日数据失败求助
问题解决:动态日期过滤谷歌表格数据失效的问题
核心问题
你代码里的错误在于把变量pt和ct用单引号包裹成了字符串'pt'和'ct',这会让Pandas把它们当成文本而非日期变量来比较,自然无法匹配到正确数据。
修正后的代码
import pandas as pd import datetime sheet_id = "19SzfcL3muVeISycG5eFYUqwrwwReGETZsNtl-euGU" sheet_name = "October-2022" url=f"https://docs.google.com/spreadsheets/d/{sheet_id}/gviz/tq?tqx=out:csv&sheet={sheet_name}" # 获取昨日和今日的日期对象(仅保留日期部分,去掉时分秒) today = datetime.datetime.today().date() yesterday = today - datetime.timedelta(days=1) df = pd.read_csv(url) # 将Timestamp列转为日期格式,确保只保留日期部分 df['Timestamp1'] = pd.to_datetime(df['Timestamp'], format='%Y-%m-%d').dt.date # 直接使用日期变量进行过滤,无需加引号 filtered_df = df.loc[(df['Timestamp1'] == yesterday)] filtered_df
额外优化点
- 因为你要提取的是前一日的所有数据,直接用
==匹配昨日日期更精准,不用范围判断(除非Timestamp里包含时分秒,这时候再用> 昨日0点和< 今日0点的范围逻辑)。 - 把日期变量转成
date对象,和Timestamp1的类型统一,避免因时分秒导致的匹配误差。 - 移除了未用到的
re和dateutil.parser库,精简代码结构。
内容的提问来源于stack exchange,提问作者francis fernandes
相关产品推荐
相关产品推荐

