Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从python dataframe导出到googlesheets_Python_Pandas_Dataframe_Google Sheets Api_Gspread - Fatal编程技术网

将数据从python dataframe导出到googlesheets

将数据从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

我试图将python数据框导出到google工作表中,但单元格中出现的值都以撇号(')开头。有没有一种方法可以让我格式化这些值,这样输出就可以是一个正常的数字,而不必在谷歌的工作表上手动格式化这些数字?我正在使用df2gspread将我的数据上传到google sheets。我假设这是因为数字被读取为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'对象在使用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中,
    values\u update
    似乎是gspread.models.Spreadsheet类的方法

  • 关于你的附加脚本

      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}
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
  • 这里使用的是
    'valueInputOption':'USER\u ENTERED'
参考资料:
修改点:
  • 在脚本中,似乎
    wks\u name
    wks\u name 1
    是字符串值。我想这就是你的问题所在

  • 在gspread中,
    values\u update
    似乎是gspread.models.Spreadsheet类的方法

  • 关于你的附加脚本

      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}
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
  • 这里使用的是
    'valueInputOption':'USER\u ENTERED'
参考资料:

我认为您的问题可能与。这个怎么样?我尝试了该线程的一些变体,但我一直遇到一个问题,它会说“\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_更新部分。感谢您的回复。根据您的回复,我发布了一个修改后的脚本作为答案。你能确认一下吗?我想你的问题可能与你的工作有关。这个怎么样?我尝试了该线程的一些变体,但我一直遇到一个问题,它会说“\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感谢您的回复。给您带来不便,我深表歉意。不幸的是,我无法复制你的情况。因为当我测试修改后的脚本时,我可以确认脚本工作正常。这是应得的