如何设置日期时间的格式,以便Google Sheets将该值识别为日期时间

更新时间:2023-04-02 13:20:09

问题阐述

我目前正在使用Gspare将数据从Google工作表检索到Pandas DataFrame。为了做到这一点,我只需在https://gspread.readthedocs.io/en/latest/user-guide.html#using-gspread-with-pandas

中遵循他们的示例
df = pd.DataFrame(sheet.get_all_records())
df["From"] = pd.to_datetime(df["From"])
df["To"] = pd.to_datetime(df["To"])

运行良好,但在我想要更新电子表格时出现问题。

如果我只尝试使用 pandas DataFrame更新范围:

sheet.update([df.columns.values.tolist()] + df.values.tolist())

我收到以下错误:

TIMESTAMP类型的对象不可JSON序列化

因此,我认为我需要将时间戳转换回一个字符串:

df["From"] = df["From"].dt.strftime("%Y-%m-%d %H:%M:%S.%f")
df["To"] = df["To"].dt.strftime("%Y-%m-%d %H:%M:%S.%f")

更新运行良好,但数据未被识别为时间戳:

有没有办法让Google电子表格正确识别日期(即正确的格式是什么)?

精准答案

此修改如何?

发件人:

df["From"] = df["From"].dt.strftime("%Y-%m-%d %H:%M:%S.%f")
df["To"] = df["To"].dt.strftime("%Y-%m-%d %H:%M:%S.%f")
sheet.update([df.columns.values.tolist()] + df.values.tolist())

收件人:

df["From"] = df["From"].dt.strftime("%Y-%m-%d %H:%M:%S.%f")
df["To"] = df["To"].dt.strftime("%Y-%m-%d %H:%M:%S.%f")
sheet.update([df.columns.values.tolist()] + df.values.tolist(), value_input_option='USER_ENTERED')

USER_ENTERED:这些值将被解析,就像用户将它们输入到UI中一样。数字将保留为数字,但字符串可能会转换为数字、日期等,所遵循的规则与通过Google Sheets用户界面将文本输入单元格时所应用的规则相同。Ref

<<2-1]>的缺省值似乎是RAW。这样,单引号将作为文本值添加到值的顶部。

引用: