将数据从python dataframe导出到googlesheets
我试图将python数据框导出到google工作表中,但单元格中出现的值都以撇号(')开头。有没有一种方法可以让我格式化这些值,这样输出就可以是一个正常的数字,而不必在谷歌的工作表上手动格式化这些数字?我正在使用df2gspread将我的数据上传到google sheets。我假设这是因为数字被读取为str,但我对所有数值进行了pd.to_numeric处理,所以我认为它会解决,但没有。关于如何处理/修复这个问题,有什么想法吗将数据从python dataframe导出到googlesheets,python,pandas,dataframe,google-sheets-api,gspread,Python,Pandas,Dataframe,Google Sheets Api,Gspread,我试图将python数据框导出到google工作表中,但单元格中出现的值都以撇号(')开头。有没有一种方法可以让我格式化这些值,这样输出就可以是一个正常的数字,而不必在谷歌的工作表上手动格式化这些数字?我正在使用df2gspread将我的数据上传到google sheets。我假设这是因为数字被读取为str,但我对所有数值进行了pd.to_numeric处理,所以我认为它会解决,但没有。关于如何处理/修复这个问题,有什么想法吗 import gspread from df2gspread imp
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'对象在使用update方法时没有属性'values\u 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”没有属性“values update”。我已尝试更改可能的变量,但似乎遗漏了一些内容。修改点:
- 在脚本中,似乎
和wks\u name
是字符串值。我想这就是你的问题所在wks\u name 1
- 在gspread中,
似乎是gspread.models.Spreadsheet类的方法values\u 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})
- 我认为第一部分可以使用。但是关于第二部分,虽然我不确定df2
和values2.tolist()
可能分别是{'values':values}
和df2.values.tolist()
{'values':values2}
- 我认为第一部分可以使用。但是关于第二部分,虽然我不确定df2
- 这里使用的是
'valueInputOption':'USER\u ENTERED'
- 在脚本中,似乎
和wks\u name
是字符串值。我想这就是你的问题所在wks\u name 1
- 在gspread中,
似乎是gspread.models.Spreadsheet类的方法values\u 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})
- 我认为第一部分可以使用。但是关于第二部分,虽然我不确定df2
和values2.tolist()
可能分别是{'values':values}
和df2.values.tolist()
{'values':values2}
- 我认为第一部分可以使用。但是关于第二部分,虽然我不确定df2
- 这里使用的是
'valueInputOption':'USER\u ENTERED'
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_更新('Transform',params={'valueInputOption':'USER_ented'},body={'values':values})
感谢您的回复。我有两个问题需要你回答。1.的错误在哪里发生?我一直得到一个问题,它会说“\uuuuuuuuuuuuuuuuuuuuuuuuuu”没有属性“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?2.当脚本被放到注释中时,我认为可读性变低了。那么你能在你的问题中添加脚本吗?当然,这是我正在使用的主要导入/导出功能。错误发生在wks_name.values_更新部分。感谢您的回复。根据您的回复,我发布了一个修改后的脚本作为答案。你能确认一下吗?我想你的问题可能与你的工作有关。这个怎么样?我尝试了该线程的一些变体,但我一直遇到一个问题,它会说“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”没有属性。我的新尝试看起来有点像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_更新('Transform',params={'valueInputOption':'USER_ented'},body={'values':values})
感谢您的回复。我有两个问题需要你回答。1.的错误在哪里发生?我一直得到一个问题,它会说“\uuuuuuuuuuuuuuuuuuuuuuuuuu”没有属性“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?2.当脚本被放到注释中时,我认为可读性变低了。那么你能在你的问题中添加脚本吗?当然,这是我正在使用的主要导入/导出功能。错误发生在wks_name.values_更新部分。感谢您的回复。根据您的回复,我发布了一个修改后的脚本作为答案。你能确认一下吗?我用这种方法有困难。这是否仅在数据类型都相同时才起作用?一些与upload方法配合良好的变量突然出现错误。@DayLy感谢您的回复。给您带来不便,我深表歉意。不幸的是,我无法复制你的情况。因为当我测试修改后的脚本时,我可以确认脚本工作正常。这是因为我的技术差。对此我深表歉意。为了正确理解您的问题,您能否提供复制您的问题的脚本?通过这一点,我想确认一下。当你能合作解决你的问题时,我很高兴。如果你能做到,请把它添加到你的问题中。你能合作解决你的问题吗?我用这种方法有困难。这是否仅在数据类型都相同时才起作用?一些与upload方法配合良好的变量突然出现错误。@DayLy感谢您的回复。给您带来不便,我深表歉意。不幸的是,我无法复制你的情况。因为当我测试修改后的脚本时,我可以确认脚本工作正常。这是应得的