簡體   English   中英

關於使用gspread檢索數據和更新的問題

[英]Question on using gspread to retrieve data and update

我有一個要檢索的谷歌電子表格:這就是數據在谷歌表格上的顯示方式。 'Business' 是第一個 header,第二行 'Name','Age','Fav color' 是第二個標題。

商業
姓名 年齡 最喜歡的顏色
a1 b1 綠色的
a2 b2 綠色的
a3 b3 綠色的
import gspread
import pandas as pd
import gspread_dataframe as gd

worksheet = sh.get_worksheet(index[0])
df = pd.DataFrame(final_worksheet.get_all_records())

當我得到工作表時,output 顯示為:

商業
姓名 最喜歡的顏色
a1 綠色的
a2 綠色的
a3 綠色的

這不是我要找的。

問題:我希望我可以獲取 dataframe 作為列標題(沒有業務標題),然后允許我插入一些值,以便最終的 output(在谷歌電子表格上)將是:

商業
姓名 年齡 最喜歡的顏色
約翰 99 藍色的
a1 b1 綠色的
a2 b2 綠色的
a3 b3 綠色的

這是我用來更新電子表格的代碼:

final_updated = updated.append(final_output)
gd.set_with_dataframe(final_worksheet, final_updated)

修改點:

  • 當使用final_worksheet.get_all_records()檢索工作表中的值時,將返回以下值

     [{'': 'Fav color', 'Business': 'Name'}, {'': 'Green', 'Business': 'a1'}, {'': 'Green', 'Business': 'a2'}, {'': 'Green', 'Business': 'a3'}]
    • 我認為這可能是您的問題的原因。
    • 在這種情況下,如何從使用get_all_values()檢索到的切片創建 dataframe ?
  • 關於I am hoping that I can grab the dataframe with Name, Age, Fav color as column headers (without the Business header) and then allow me to insert some values so that the final output (on google spreadsheet) would be:案例,如何使用insert_rows()的方法? 我認為在這種情況下,腳本可能會更簡單。

  • 在您的腳本中,聲明了worksheet 但似乎final_worksheet沒有聲明。

當以上幾點反映到您的腳本中時,它變成如下。

修改腳本1:

在這個修改后的腳本中, df = pd.DataFrame(final_worksheet.get_all_records())被修改了。

從:
 df = pd.DataFrame(final_worksheet.get_all_records())
至:
worksheet = sh.get_worksheet(index[0])
worksheet.insert_rows([['John', 99, 'Blue']], row=3, value_input_option='USER_ENTERED')

修改腳本2:

在這個修改后的腳本中,您要插入的行是使用insert_rows()的方法放置的。

從:
 worksheet = sh.get_worksheet(index[0]) df = pd.DataFrame(final_worksheet.get_all_records())
至:
 worksheet = sh.get_worksheet(index[0]) worksheet.insert_rows([['John', 99, 'Blue']], row=3, value_input_option='USER_ENTERED')
  • 在這種情況下,可以將[['John', 99, 'Blue']]的值直接插入到第 3 行。

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM