gspread - 按列名获取特定列
gspread - get specific columns by column name
我有一个 sheet 结构如下。
COLUMN1 | COLUMN2 | COLUMN3
0 | 3 | 1
1 | 3 |
2 | 5 | 4
4 | 2 | 2
如何通过列名 return 只显示第 1 列和第 2 列?不是按指数。
使用如下所示的 wks.get_all_values(),它将 return sheet.
的所有列
我的代码:
ss = gs.open(args['name'])
wks = ss.worksheet(args['worksheet'])
data = wks.get_all_values()
headers = data.pop(0)
df = pd.Dataframe(data, columns=headers)
我需要类似 wks.get_columns(['COLUMN1','COLUMN2'])
希望有人能帮助我。
谢谢
我相信你的目标如下。
- 您想按 header 个值检索列。
- 您想使用 python 的 gspread 实现此目的。
这样的话,下面的修改怎么样?
修改后的脚本:
在此修改中,特定列是从使用 wks.get_all_values()
检索的值中检索的。在这种情况下,使用一个 API 调用。例如,当检索到 header 行后检索特定列时,将检索 2 个 API 调用。所以我提出了这个方法。
headers = ["COLUMN1", "COLUMN3"] # Please set the header values you want to retrieve.
ss = gs.open(args['name'])
wks = ss.worksheet(args['worksheet'])
values = wks.get_all_values()
data = zip(*(e for e in zip(*values) if e[0] in headers))
df = pd.DataFrame(data, columns=headers)
当这个脚本运行在你的问题中使用你的示例sheet时,得到以下结果。
0 COLUMN1 COLUMN3
1 0 1
2 1
3 2 4
4 4 2
当您要将data
作为列表检索时,请将data = zip(*(e for e in zip(*values) if e[0] in headers))
修改为data = [list(f) for f in zip(*(e for e in zip(*values) if e[0] in headers))]
。
我有一个 sheet 结构如下。
COLUMN1 | COLUMN2 | COLUMN3
0 | 3 | 1
1 | 3 |
2 | 5 | 4
4 | 2 | 2
如何通过列名 return 只显示第 1 列和第 2 列?不是按指数。 使用如下所示的 wks.get_all_values(),它将 return sheet.
的所有列我的代码:
ss = gs.open(args['name'])
wks = ss.worksheet(args['worksheet'])
data = wks.get_all_values()
headers = data.pop(0)
df = pd.Dataframe(data, columns=headers)
我需要类似 wks.get_columns(['COLUMN1','COLUMN2'])
希望有人能帮助我。 谢谢
我相信你的目标如下。
- 您想按 header 个值检索列。
- 您想使用 python 的 gspread 实现此目的。
这样的话,下面的修改怎么样?
修改后的脚本:
在此修改中,特定列是从使用 wks.get_all_values()
检索的值中检索的。在这种情况下,使用一个 API 调用。例如,当检索到 header 行后检索特定列时,将检索 2 个 API 调用。所以我提出了这个方法。
headers = ["COLUMN1", "COLUMN3"] # Please set the header values you want to retrieve.
ss = gs.open(args['name'])
wks = ss.worksheet(args['worksheet'])
values = wks.get_all_values()
data = zip(*(e for e in zip(*values) if e[0] in headers))
df = pd.DataFrame(data, columns=headers)
当这个脚本运行在你的问题中使用你的示例sheet时,得到以下结果。
0 COLUMN1 COLUMN3 1 0 1 2 1 3 2 4 4 4 2
当您要将
data
作为列表检索时,请将data = zip(*(e for e in zip(*values) if e[0] in headers))
修改为data = [list(f) for f in zip(*(e for e in zip(*values) if e[0] in headers))]
。