Appending pandas Data Frame to Google spreadsheet
I can recommend gspread-dataframe
:
import gspread_dataframe as gd
# Connecting with `gspread` here
ws = gc.open("SheetName").worksheet("xyz")
existing = gd.get_as_dataframe(ws)
updated = existing.append(your_new_data)
gd.set_with_dataframe(ws, updated)
Here is the code to write, append(without loading the existing sheet into memory), and read to google sheets.
import gspread_dataframe as gd
import gspread as gs
gc = gs.service_account(filename="your/cred/file.json")
def export_to_sheets(worksheet_name,df,mode='r'):
ws = gc.open("SHEET_NAME").worksheet("worksheet_name")
if(mode=='w'):
ws.clear()
gd.set_with_dataframe(worksheet=ws,dataframe=df,include_index=False,include_column_header=True,resize=True)
return True
elif(mode=='a'):
ws.add_rows(df.shape[0])
gd.set_with_dataframe(worksheet=ws,dataframe=df,include_index=False,include_column_header=False,row=ws.row_count+1,resize=False)
return True
else:
return gd.get_as_dataframe(worksheet=ws)
df = pd.DataFrame.from_records([{'a': i, 'b': i * 2} for i in range(100)])
export_to_sheets("SHEET_NAME",df,'a')
- Write Mode: First clear existing worksheet =>
ws.clear()
.Second usingset_with_dataframe()
uploading the dataframe, here note thatresize=True
, which strictily set the row and col in worksheet to df.shape. This will help later in append method. - Append Mode: First, add rows according to the dataframe. Second setting the parameter
resize=False
as we are adding rows androw=ws.row_count+1
anchoring its row value for append. - Read Mode(Default): returns a dataframe