我有这样的Google电子表格
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库的哪个其他方法允许这样做。
答案 0 :(得分:1)
您要使用如下所示的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)
。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。