Python - 如何从 Python 中的 Google Sheet 中读取特定范围的行和列?
Python - How to read specific range of rows and columns from Google Sheet in Python?
在GoogleSheet
中得到了类似下面的数据
需要读取从“A4 到 C4”列开始的数据范围,在 Python 下方有无数行(灵活)固定。
帮助我,因为我是 Google Sheet 和 Python.
的新手
作为 Dataframe df 的 Python 中的预期输出如下:
Name Row Class
AA 1 II
BB 2 I
CC 3 III
DD 4 II
您可以像这样使用 pandas skiprows 我已经检查过了,它正在工作 我正在使用 .ods sheet
import pandas as pd
df = pd.read_excel(
"test.ods", engine="odf",
index_col=None,
header=None,
skiprows=lambda x: x in [0,1,2],
keep_default_na=False
)
print(df)
for i in df:
print(df[i])
我知道这不是一个完整的解决方案,但离它很近。
在您的情况下,以下示例脚本如何?
示例脚本 1:
如果您的 Spreadsheet 不是作为 Web 发布发布的,那么下面的脚本怎么样?在此示例脚本中,我将 googleapis 用于 python。所以,关于如何使用这个,请查看Python Quickstart for Sheets API. service = build('sheets', 'v4', credentials=creds)
in my proposed script is the same with the script of Python Quickstart for Sheets API.
spreadsheet_id = "###" # Please set the Spreadsheet ID.
range_a1Notation = "Sheet1!A4:C" # Please set the range as the A1Notation.
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId=spreadsheet_id, range=range_a1Notation).execute()
values = result.get("values", [])
df = pd.DataFrame(values)
示例脚本 2:
如果您的 Spreadsheet 发布为 Web 发布,您可以使用以下脚本。
import io
import pandas as pd
import requests
url = 'https://docs.google.com/spreadsheets/d/e/2PACX-###/pub?sheet=Sheet1&range=A4%3AC&output=csv'
df = pd.read_csv(io.BytesIO(requests.get(url).content), sep=',')
- 在这种情况下,请将
2PACX-###
替换为您发布的网站 URL。
Sheet1
of sheet=Sheet1
是 sheet 名字。
A4%3AC
of range=A4%3AC
是范围 A4:C
作为 A1Notation。
参考文献:
使用 openpyxl
简单易行:
from openpyxl import load_workbook
wb = load_workbook(filename = 'your_path_to_file.xlsx')
sheet = wb['Your sheet name']
for index, row in enumerate(sheet.iter_rows()):
if index == "your specific index":
"Do something"
在GoogleSheet
中得到了类似下面的数据需要读取从“A4 到 C4”列开始的数据范围,在 Python 下方有无数行(灵活)固定。 帮助我,因为我是 Google Sheet 和 Python.
的新手作为 Dataframe df 的 Python 中的预期输出如下:
Name Row Class
AA 1 II
BB 2 I
CC 3 III
DD 4 II
您可以像这样使用 pandas skiprows 我已经检查过了,它正在工作 我正在使用 .ods sheet
import pandas as pd
df = pd.read_excel(
"test.ods", engine="odf",
index_col=None,
header=None,
skiprows=lambda x: x in [0,1,2],
keep_default_na=False
)
print(df)
for i in df:
print(df[i])
我知道这不是一个完整的解决方案,但离它很近。
在您的情况下,以下示例脚本如何?
示例脚本 1:
如果您的 Spreadsheet 不是作为 Web 发布发布的,那么下面的脚本怎么样?在此示例脚本中,我将 googleapis 用于 python。所以,关于如何使用这个,请查看Python Quickstart for Sheets API. service = build('sheets', 'v4', credentials=creds)
in my proposed script is the same with the script of Python Quickstart for Sheets API.
spreadsheet_id = "###" # Please set the Spreadsheet ID.
range_a1Notation = "Sheet1!A4:C" # Please set the range as the A1Notation.
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId=spreadsheet_id, range=range_a1Notation).execute()
values = result.get("values", [])
df = pd.DataFrame(values)
示例脚本 2:
如果您的 Spreadsheet 发布为 Web 发布,您可以使用以下脚本。
import io
import pandas as pd
import requests
url = 'https://docs.google.com/spreadsheets/d/e/2PACX-###/pub?sheet=Sheet1&range=A4%3AC&output=csv'
df = pd.read_csv(io.BytesIO(requests.get(url).content), sep=',')
- 在这种情况下,请将
2PACX-###
替换为您发布的网站 URL。 Sheet1
ofsheet=Sheet1
是 sheet 名字。A4%3AC
ofrange=A4%3AC
是范围A4:C
作为 A1Notation。
参考文献:
使用 openpyxl
简单易行:
from openpyxl import load_workbook
wb = load_workbook(filename = 'your_path_to_file.xlsx')
sheet = wb['Your sheet name']
for index, row in enumerate(sheet.iter_rows()):
if index == "your specific index":
"Do something"