我有一个脚本,它接受一个pandas数据帧并将其分成几百个块并将每个块保存为单独的excel文件.每个块将具有相同数量的列,但行数会有所不同.我已经想出如何使用openpyxl将所有其他必要的格式应用于这些文件,但我还没有确定应用边框的最快方法.此外,我认为我只是没有正确应用边框,因为下面的代码(我怀疑不应该单独遍历每个单元格)不适用任何边框.
from openpyxl.style import Border
wb = load_workbook(filename = _fname)
ws = wb.worksheets[0]
for _row in ws.range('A1:L'+str(ws.get_highest_row() ) ):
for _cell in _row:
_cell.style.borders.left.border_style = Border.BORDER_THIN
_cell.style.borders.right.border_style = Border.BORDER_THIN
_cell.style.borders.top.border_style = Border.BORDER_THIN
_cell.style.borders.bottom.border_style = Border.BORDER_THIN
wb.save(_fname)
Run Code Online (Sandbox Code Playgroud)
所以这段代码可以工作,但它不会应用我期望的边框(excel中的默认边框),它需要比我更喜欢的步骤.我的期望是我应该能够做到这样的事情:
from openpyxl.style import Border
wb = load_workbook(filename = _fname)
ws = wb.worksheets[0]
_range = ws.some_range_func('A1:L'+str(ws.get_highest_row() ) ):
_range.style.borders.all_borders = Borders.BORDER_THIN
Run Code Online (Sandbox Code Playgroud)
这个功能是否存在?如果没有,有人可以这么好,至少解释如何应用默认边框样式而不是这个稍厚的边框?Border.BORDER_THICK,Border.BORDER_MEDIUM,Border.BORDER_THIN或Border.BORDER_HAIR似乎都没有.
谢谢!
我正在使用Oracle数据库.我可以这么做:
import pandas as pd
import pandas.io.sql as psql
import cx_Oracle as odb
conn = odb.connect(_user +'/'+ _pass +'@'+ _dbenv)
sqlStr = "SELECT * FROM customers"
df = psql.frame_query(sqlStr, conn)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何处理绑定变量,如下所示:
sqlStr = """SELECT * FROM customers
WHERE id BETWEEN :v1 AND :v2
"""
Run Code Online (Sandbox Code Playgroud)
我尝试过这些变化:
params = (1234, 5678)
params2 = {"v1":1234, "v2":5678}
df = psql.frame_query((sqlStr,params), conn)
df = psql.frame_query((sqlStr,params2), conn)
df = psql.frame_query(sqlStr,params, conn)
df = psql.frame_query(sqlStr,params2, conn)
Run Code Online (Sandbox Code Playgroud)
以下作品:
curs = conn.cursor()
curs.execute(sqlStr, params)
df = pd.DataFrame(curs.fetchall())
df.columns = …Run Code Online (Sandbox Code Playgroud) 我知道这是一个非常基本的问题,抱歉.
我想用矩阵乘以矩阵的每一行.所以我有:
mat=matrix(1,2,4)
vec=c(1,2,3,4)
#works but ugly:
new.mat=mat
for(i in 1:nrow(mat)){
new.mat[i,]=mat[i,]*vec
}
Run Code Online (Sandbox Code Playgroud)
我以为我找到了'应用'的答案,但我无法以同样的方式工作.
这基于/sf/answers/937224081/发布的答案
我想监视数据流并将其推送到类似于上述答案的前端,但是一旦应用启动,该流就开始生成/监视数据,并且客户端始终会看到数据流的当前状态。数据流(无论它们是否正在从服务器请求数据,它都会一直运行)。
我很确定我需要通过线程将数据流与前端分开,但是我对线程/异步编程不是很熟练,并且认为我做错了。也许不是threading我需要使用多重处理?这大致就是我想做的事情(根据上面链接的答案进行了修改):
app.py
#!/usr/bin/env python
from __future__ import division
import itertools
import time
from flask import Flask, Response, redirect, request, url_for
from random import gauss
import threading
app = Flask(__name__)
# Generate streaming data and calculate statistics from it
class MyStreamMonitor(object):
def __init__(self):
self.sum = 0
self.count = 0
@property
def mu(self):
try:
outv = self.sum/self.count
except:
outv = 0
return outv
def generate_values(self):
while True:
time.sleep(.1) # an artificial delay
yield gauss(0,1)
def monitor(self, …Run Code Online (Sandbox Code Playgroud) 我正在尝试优化算法以减少内存使用量,并且我已经将此特定操作确定为一个痛点.
我有一个对称矩阵,沿着行的索引数组,以及沿着列的另一个索引数组(这只是我没有在行索引中选择的所有值).我觉得我应该能够同时传入两个索引,但我发现自己被迫沿着一个轴选择然后另一个轴,这导致一些内存问题,因为我实际上并不需要副本返回的数组,只是我正在计算的统计数据.这是我想要做的:
from scipy.spatial.distance import pdist, squareform
from sklearn import datasets
import numpy as np
iris = datasets.load_iris().data
dx = pdist(iris)
mat = squareform(dx)
outliers = [41,62,106,108,109,134,135]
inliers = np.setdiff1d( range(iris.shape[0]), outliers)
# What I want to be able to do:
scores = mat[inliers, outliers].min(axis=0)
Run Code Online (Sandbox Code Playgroud)
以下是我实际做的工作:
# What I'm being forced to do:
s1 = mat[:,outliers]
scores = s1[inliers,:].min(axis=0)
Run Code Online (Sandbox Code Playgroud)
因为我喜欢索引,所以s1是一个新数组而不是视图.我只需要这个数组用于一个操作,所以如果我可以消除在这里返回一个副本或至少使新数组变小(即通过尊重第二个花哨的索引选择,而我正在做第一个而不是两个独立的花式索引操作)这将是更可取的.
如何在NetworkX图形中设置透明边缘标签?目前,每个标签都有白色背景,可切割我的边缘并与其他标签重叠
nx.draw(v29graph,
nx.get_node_attributes(v29graph,'pos'),
edge_labels=labels2
)
nx.draw_networkx_edge_labels(v29graph,
pos=nx.get_node_attributes(v29graph,'pos'),
edge_labels=labels2
)
Run Code Online (Sandbox Code Playgroud) 我有一个很大的excel文件,该文件用于汇总对多个客户端的问题的跟踪,我需要根据客户端将其分成较小的文件。
到目前为止,这是我得到的:我构建了一个python脚本,将该文件分为适当的客户端特定文件,并将正确的标头行应用于所有这些文件,但它会生成难看的CSV。我的老板想应用一些格式,所以我需要做的是(对于目录中的所有CSV):
将每个文件从CSV转换为.xls(或.xlsx),以便保存格式
自动调整列宽
将第一行设为粗体(并可能在行中应用颜色)
到目前为止,我猜测我可能可以使用pyWin32或pyExcelerator做到这一点,但是考虑到我要进行的最小更改是将其作为VB脚本或宏之类的方法可能会更容易,但是我没有真的不知道那些工具。