Как я могу печатать только строки, у которых точный номер столбца больше x? Sheets Api с Python

#python #google-sheets #google-sheets-api

#python #google-sheets #google-sheets-api

Вопрос:

Итак, что я хочу сделать, это печатать только строки, в которых, например, цена (или любая другая ячейка «заголовка» строки больше или равна, скажем, 50.

Я не смог найти ответ в другом месте и не смог сделать это самостоятельно с помощью документации API. Я использую Google Sheets API v4, и моя цель основана на листах, которые содержат информацию о мобильной подписке, позволяют пользователю выбирать, что они хотят по цене, ГБ и т.д.

Вот как выглядят мои листы: Вот как выглядят мои листы

Кроме того, вот неофициальная документация, которую я нашел отличной, хотя она не содержала нужного мне ответа, может быть, у кого-то здесь получится?

Я попытался запустить следующий код, но он не сработал:

 val_list = col5 

d = wks.findall(>50) if cell.value >50 :

print (val_list)
  

Я надеюсь, что вы сможете мне помочь. Я новичок в Python.

Ответ №1:

Я думаю, у вас была правильная идея, но похоже findall , что это для строк или регулярных выражений, а не для произвольного логического условия. Кроме того, некоторые синтаксические ошибки немного неточны, но этого следует ожидать, когда вы только начинаете.

Вот как я бы подошел к этому, используя только то, что я смог найти в вашем прикрепленном документе. Я сомневаюсь, что это самый быстрый или чистый способ сделать это, но я думаю, что это, по крайней мере, концептуально понятно:

 #list of all values in 4th/price column
prices=wks.col_values(4) 
#Remove nonnumeric characters from prices
prices=[p.replace('*','') for p in prices[1:]]

#Get indices of rows with price >=50
##i 2 to account for one indexing and removing header row
indices=[i 2 for i,p in enumerate(prices) if float(p)>=50]
#Print these rows
for i in indices:
    row=wks.row_values(i)
    print(row)    
  

В дальнейшем с этим проектом вы можете поместить эти значения строк в dataframe, а не просто печатать их, чтобы вы могли провести дальнейший анализ этого подмножества данных.

Комментарии:

1. Вы потрясли, это сработало! Еще один небольшой вопрос, не могли бы вы указать или связать некоторую информацию о создании фрейма данных? Bc G Sheets Api ограничивает запрос примерно до 1000 запросов в секунду, и когда я закончу свой веб-сайт, это может (даже) стать проблемой.

2. @TechFan_Theo pandas — самая распространенная библиотека для этого в Python. Я ссылался на их страницу документации, но есть также много вопросов по StackOverflow, связанных с использованием pandas.

3. @TechFan_Theo рассмотрите возможность голосования / принятия, если это решило вашу проблему.