Как определить первый пустой столбец в Google Sheet для добавления кадра данных с помощью Python? - PullRequest
1 голос
/ 13 июня 2019

Я хочу добавить фрейм данных на лист Google, который уже имеет некоторые значения. Я хочу идентифицировать первый пустой столбец и добавить туда фрейм данных .

В настоящее время я вставляю фрейм данных в лист Google, используя код:

import pygsheets 

gc = pygsheets.authorize(service_file='client_secret.json')
sh = gc.open_by_url('URL') 

wks = sh[0] #Selecting the sheet 
wks.set_dataframe(df, 'A1')

# A1 - это ячейка, в которую вставляется датафрейм

Я хочу иметь возможность идентифицировать этот столбец 'A1' - где A - это первый пустой столбец в листе Google и вставить туда мой фрейм данных .

Как мне это сделать с помощью Python? В настоящее время я использую pygsheets, хотя я открыт для решений, использующих любые другие пакеты.

1 Ответ

1 голос
/ 13 июня 2019
  • Вы хотите поместить значения из первого пустого столбца.
  • Например, столбцы «A», «B» и «C» имеют значения, вы хотите поместить новые значения из столбца «D1».
  • Вы хотите достичь этого, используя Python и pygsheets.

Если мое понимание верно, как насчет этой модификации? Ход этой модификации выглядит следующим образом.

  1. Существующие значения извлекаются с использованием get_all_values().
  2. Получить номер первого пустого столбца.
  3. Преобразовать номер столбца в букву столбца.
  4. Поместить дополнительное значение в извлеченный столбец.

Модифицированный скрипт:

Пожалуйста, измените ваш сценарий в вашем вопросе следующим образом.

От:
wks.set_dataframe(df, 'A1')
Для того, чтобы:
import numpy as np  # Added

v = wks.get_all_values()
ar = np.array(v).transpose()
for i, e in enumerate(ar):
    r = any(x for x in e)
    if r is False:

        # https://stackoverflow.com/a/23862195/7108653
        n = i + 1
        string = ''
        while n > 0:
            n, remainder = divmod(n - 1, 26)
            string = chr(65 + remainder) + string

        wks.set_dataframe(df, string + "1")
        break

Примечание:

  • Я использовал «numpy» для вышеуказанного модифицированного скрипта.

Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.

...