【发布时间】:2020-10-30 19:01:48
【问题描述】:
我正在尝试将 python pandas 数据框导出到 Google 工作表中,但出现在单元格中的值都以撇号 (') 开头。有没有办法让我格式化这些值,这样输出就会是一个正常的数字,而无需手动格式化谷歌表格上的数字?我正在使用 df2gspread 将我的数据上传到谷歌表格。我假设这是因为数字被读取为 str,但我对所有数值做了 pd.to_numeric 所以我认为它会解决但没有。关于我应该如何处理/解决这个问题的任何想法?
import gspread
from df2gspread import df2gspread as d2g
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
import numpy as np
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
#service_account from Google API.
credentials = ServiceAccountCredentials.from_json_keyfile_name(
"service_account.json", scope)
gc = gspread.authorize(credentials)
wks = gc.open("Two").sheet1
data = wks.get_all_values()
headers = data.pop(0)
ssid = 'insert-ssid'
wks_name = 'Transform'
wks_name1 = 'Summary'
cell_of_start_df = 'B2'
pd.set_option('display.max_rows', 300)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
df = pd.DataFrame(data, columns=headers)
df2 = ...
d2g.upload(df,
ssid,
wks_name,
credentials = credentials,
col_names = True,
row_names = True,
start_cell = cell_of_start_df,
clean = True)
d2g.upload(df2,
ssid,
wks_name1,
credentials = credentials,
col_names = True,
row_names = True,
start_cell = cell_of_start_df,
clean = True)
我得到 AttributeError: 'str' object has no attribute 'values_update' 使用更新方法时
values = [df.columns.values.tolist()]
values.extend(df.values.tolist())
wks_name.values_update('Transform', params={'valueInputOption': 'USER_ENTERED'}, body={'values': values})
values2 = [df2.columns.values.tolist()]
values2.extend(df2.values2.tolist())
wks_name1.values_update('Summary', params={'valueInputOption': 'USER_ENTERED'}, body={'values': values})
我的错误发生在 wks_name.values_update 行中,说“str”没有属性“值更新”。我已尝试更改可能的变量,但似乎我遗漏了一些东西。
【问题讨论】:
-
我认为您的问题可能与this thread 有关。这个怎么样?
-
我尝试了该线程的一些变体,但我一直遇到一个问题,它会说 '____' 没有属性到 '____'。我的新尝试看起来像。
gc = gspread.authorize(credentials) wks = gc.open("Project").sheet1 data = wks.get_all_values() ssid = 'insert sheet id' wks_name = 'Transform' values = [df.columns.values.tolist()] values.extend(df.values.tolist()) wks_name.values_update('Transform', params={'valueInputOption': 'USER_ENTERED'}, body={'values': values}) -
感谢您的回复。我有 2 个问题要您回复。 1、
I keep getting an issue where it would say '____' has no attribute to '____'.的错误出现在哪里? 2. 把脚本放到评论里,我觉得可读性变低了。那么你可以在你的问题中添加脚本吗? -
当然,这几乎是我正在使用的主要导入/导出功能。错误发生在 wks_name.values_update 部分。
-
感谢您的回复。根据您的回复,我发布了一个修改后的脚本作为答案。你能确认一下吗?
标签: python pandas dataframe google-sheets-api gspread