谷歌电子表格中数组公式的最佳实践问题
假设我在 A 列有一列值。在 B 列中,我乘以 10。我可以对整个范围使用数组公式,或者在 B 列中创建第一个单独的公式并粘贴下来。
我的问题是哪个更好用?数组计算速度更快吗?从速度的角度来看有什么好处吗?我有很大的电子表格,我想知道这是否会有所作为。
在新的Google表格中,他们为条件格式添加了自定义公式.我想要的细胞是蓝色的,如果电池是一个值,黑色,如果它是一个公式......我已经通过所有的看了is类型的功能,似乎没有成为isformula一种功能.
有人知道这是否可行?
我的问题涉及这个问题:在代码中安装python模块,但涉及升级模块.
我试过了
packages=['apscheduler','beautifulsoup4','gdata']
def upgrade(packages):
for package in packages:
pip.main(['install --upgrade', package])
Run Code Online (Sandbox Code Playgroud)
和
def upgrade(packages):
for package in packages:
pip.main(['install', package + ' --upgrade'])
Run Code Online (Sandbox Code Playgroud) xlabels = ["first", "second", "third", "fourth"]
有没有办法通过 2 逐步完成列表理解?
for i in range(0,len(xlabels)):
xlabels[i]=""
Run Code Online (Sandbox Code Playgroud)
变成 ["" for i in xlabels]
它将列表变成空白。输出:["","","",""]
关于什么?:
for i in range(0,len(xlabels),2):
xlabels[i]=""
Run Code Online (Sandbox Code Playgroud)
我想将列表中的所有其他项目都变成空白。输出:["", "second", "", "fourth"]
如果我在答案中使用代码: 在Python中使用PDFMiner从PDF文件中提取文本?
我可以在申请PDF格式时提取文本:https://www.tencent.com/en-us/articles/15000691526464720.pdf
但是,您在"合并收入报表"下看到,它会读取...即... Revenues VAS Online advertising然后它会读取数字...我希望它能够读取,即:
Revenues 73,528 49,552 73,528 66,392 VAS 46,877 35,108 等等......有没有办法做到这一点?
寻找其他可能的解决方案pdfminer.
如果我尝试使用此代码,PyPDF2并非所有文本都出现:
# importing required modules
import PyPDF2
# creating a pdf file object
pdfFileObj = open(file, 'rb')
# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
# printing number of pages in pdf file
a=(pdfReader.numPages)
# creating a page object
for i in range(0,a):
pageObj = pdfReader.getPage(i)
print(pageObj.extractText())
Run Code Online (Sandbox Code Playgroud) 所以,当我运行这个...错误是在这一行,bomb=pd.DataFrame(here,0)但跟踪显示了一堆来自pandas库的代码来获取错误.
import traceback,sys
import pandas as pd
def error_handle(err_var,instance_name=None): #err_var list of variables, instance_name
print(traceback.format_exc())
a= sys._getframe(1).f_locals
for i in err_var: # selected var for instance
t= a[instance_name]
print i,"--->",getattr(t,i.split(".")[1])
here=['foo']
err_var = ['self.needthisone','self.constant2']
class test:
def __init__(self):
self.constant1 = 'hi1'
#self.constant2 = 'hi2'
#self.needthisone = ':)'
for i in err_var:
setattr(self, i.split('.')[1], None)
def other_function(self):
self.other_var=5
def testing(self):
self.other_function()
vars=[self.constant1,self.constant2]
try:
for i in vars:
bomb=pd.DataFrame(here,0)
except:
error_handle(err_var,'self')
t=test()
t.testing()
Run Code Online (Sandbox Code Playgroud)
如何抑制所有这些并使错误看起来像这样:
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud) 迁移到新的Google电子表格.我有一个自定义公式,将一些数组合并到一个数组中
=TRANSPOSE(SPLIT(ARRAYFORMULA(CONCATENATE('Monthly link'!A10:A&CHAR(13) , 'Monthly link'!R10:R&CHAR(13) , 'Monthly link'!AG10:AG&CHAR(13) , 'Monthly link'!AU10:AU&CHAR(13) )), CHAR(13)))
这个公式在旧的Google电子表格中运行得很好,但在新版本中,它给了我一个" Error: Text result of CONCATENATE is longer than the limit of 50000 characters."
有没有解决的办法?我已经尝试了这个Array_Literal公式,但似乎无法让它工作,这似乎是一个可能的解决方案.但似乎该功能将数组组合在一起而不是向下组合.
我试过了:
=array_literal('Monthly link'!A10:A,'Monthly link'!R10:R,'Monthly link'!AG10:AG,'Monthly link'!AU10:AU)
在excel中,您可以使用python创建用户定义的函数pyxll。我一直在使用Google电子表格并使用其Google应用脚本,但是这些库在python中变得更大,更好,我希望有一种方法可以使用Google电子表格中的python构建用户定义的函数。有多种方法可以将python与Google表格进行交互gspread。有没有一种方法可以在Google App Engine上运行python,然后获取表格来触发该代码?还有什么其他方法可以从Google电子表格中触发python代码?
我有一个这样的列表:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样
[['a', 'b', 'c'],['d', 'e', 'f'],['g', 'h', 'i']]
Run Code Online (Sandbox Code Playgroud)
什么是最有效的方法呢?
编辑:走另一条路怎么样?
[['a', 'b', 'c'],['d', 'e', 'f'],['g', 'h', 'i']]
Run Code Online (Sandbox Code Playgroud)
- >
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
Run Code Online (Sandbox Code Playgroud) 有谁知道如何arrayformula这个join功能?
我的公式并不像这里的示例那么复杂。ArrayFormula联接中的过滤器(Google Spreadsheets)
它不包含filter函数,因此我不确定该答案中的内容适用于和不适用。
我想数组公式: =if(isblank(B2),,join("," ,B2:I2))
使用正常的方式来排列某些东西是行不通的:
=ArrayFormula(if(isblank(B2:b),,join(",",B2:b:I2:i)))
我也有分裂 split(B2, ",")
=ArrayFormula(split(B2:B,",")) 只做第一行