python - gspread 列的选择列表
问题描述
我有一个像这样的谷歌电子表格
A B C D
0 1 2 3
4 5 7
8 9 8 7
6 5 3
我可以将所有这些值作为列表列表并将它们保存在 DataFrame 中,如下所示:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
scope=['my_scope']
credentials = ServiceAccountCredentials.from_json_keyfile_name('my_credentials', scope)
gc = gspread.authorize(credentials)
GsheetName = 'here_the_name_of_my_spreadsheet'
workSheetName = 'here_the_wsheet_name'
sht = gc.open(GsheetName)
wks = sht.worksheet(workSheetName)
get_values = wks.get_all_values()
df= pd.DataFrame(get_values)
所以 df 是
0 1 2 3
0 A B C D
1 0 1 2 3
2 4 5 nan 7
3 8 9 8 7
4 6 5 nan 3
我想做同样的事情,但只选择单元格为空的具有 NAN 值的列 B 和 D,就像这样
0 1
0 B C
1 1 2
2 5 nan
3 9 8
4 5 nan
我怎么能在不操纵df的情况下做到这一点?我想直接从电子表格的值创建它。
get_all_values() 方法获取所有工作表的值,但我只需要一些列和行,我没有找到如何使用此方法定义范围或库 gspread 的其他方法允许这样做。
解决方案
您想使用 gspread 直接从“B:C”中检索值,如下所示。
Input values: Values on Spreadsheet A B C D 0 1 2 3 4 5 7 8 9 8 7 6 5 3 Output values: Values you want to retrieve 0 1 0 1 2 1 5 None 2 9 8 3 5 None
在你的问题中,你说
only selecting columns B and D with NAN values where the cell is empty
。但您的输出值似乎是“B”和“C”列中的值。所以我修改以从“B”和“C”列中检索值。
如果我的理解是正确的,那么这个修改呢?
从:
get_values = wks.get_all_values()
至:
get_values = sht.values_get(range=workSheetName + '!B:C')['values']
笔记:
- 如果您不在
wks
脚本中使用,则可以删除wks = sht.worksheet(workSheetName)
.
参考:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
推荐阅读
- java - ThreadLocal 为不同的线程返回相同的实例
- cefsharp - 潜在的 CEF 缓存损坏情况
- php - 试图从 Laravel 中的 MySQL 获取标记值
- java - Java Security 类可防止您使用 exit(0) 终止代码!在 HackerRank
- asp.net-mvc - 将 ASP.NET Core 2.2 迁移到 3.1 后,Reponse.cookies 无法正常工作
- batch-file - 使用批处理的带有密码和加密的 RAR 文件
- laravel - Laravel 7资源路径中的自动范围
- kubernetes - 远程写入和远程读取的 Prometheus 错误“服务器返回 HTTP 状态 401 未授权”
- c++ - 从 VS 2015 Update 3 更新到 VS2015 Update 3 d 后浮点计算行为不同的原因
- c++ - 在文件上实现迭代器