如何格式化日期时间以便 Google 工作表将值识别为日期时间
How to format a datetime so Google sheets recognise the value as date time
我目前正在使用 gspread 将数据从 Google sheet 检索到 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"])
效果很好,但当我想更新点差时出现问题sheet。
如果我只尝试使用 pandas DataFrame 更新范围:
sheet.update([df.columns.values.tolist()] + df.values.tolist())
我收到以下错误:
Object of type Timestamp is not JSON serializable
因此,我认为我需要将时间戳转换回字符串:
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 Spreadsheet 正确识别日期(即正确的格式是什么)?
这个修改怎么样?
发件人:
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
: The values will be parsed as if the user typed them into the UI. Numbers will stay as numbers, but strings may be converted to numbers, dates, etc. following the same rules that are applied when entering text into a cell via the Google Sheets UI. Ref
在gspread,似乎value_input_option
的默认值是RAW
。这样,单引号作为文本值添加到值的顶部。
参考文献:
我目前正在使用 gspread 将数据从 Google sheet 检索到 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"])
效果很好,但当我想更新点差时出现问题sheet。
如果我只尝试使用 pandas DataFrame 更新范围:
sheet.update([df.columns.values.tolist()] + df.values.tolist())
我收到以下错误:
Object of type Timestamp is not JSON serializable
因此,我认为我需要将时间戳转换回字符串:
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 Spreadsheet 正确识别日期(即正确的格式是什么)?
这个修改怎么样?
发件人:
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
: The values will be parsed as if the user typed them into the UI. Numbers will stay as numbers, but strings may be converted to numbers, dates, etc. following the same rules that are applied when entering text into a cell via the Google Sheets UI. Ref
在gspread,似乎value_input_option
的默认值是RAW
。这样,单引号作为文本值添加到值的顶部。