对于这种情况,假设有一个声明的基表名为Game的表,其列名为"espn_game_id"和"a_name".在变量"s"下打开一个会话对象.这样可行:
s.add(Game(espn_game_id=888, a_name='lol'))
s.commit()
Run Code Online (Sandbox Code Playgroud)
这失败了:
n = {"espn_game_id": 888, "a_name": 'lol'}
s.add(Game(n))
s.commit()
Run Code Online (Sandbox Code Playgroud)
这是有效的(假设已经存在espn_game_id == 888的条目):
n = {"a_name": 'lol'}
s.query(Game).filter(Game.espn_game_id==888).update(n)
s.commit()
Run Code Online (Sandbox Code Playgroud)
为什么第二种情况会失败并且有没有办法让这种类型的语法在这里工作?
在下面的示例中,我希望{0}和{1}被传递给format的参数替换,而{2}应该具有\w{2}"找到两个字母的字符" 的正则表达式功能.我该怎么做呢?
q = re.search("{0}\w{2}b{1}\w{2}quarter".format('b', 'a'), search_me).group()
Run Code Online (Sandbox Code Playgroud) 我正在使用LXML从网页上抓取一些文字.一些文本包括分数.
5½
Run Code Online (Sandbox Code Playgroud)
我需要把它变成浮点格式.这些失败:
ugly_fraction.encode('utf-8') #doesn't change to usable format
ugly_fraction.replace('\xbd', '') #throws error
ugly_freaction.encode('utf-8').replace('\xbd', '') #throws error
Run Code Online (Sandbox Code Playgroud) a = ('one', 'two')
b = ('ten', 'ten')
z = [('four', 'five', 'six'), ('one', 'two', 'twenty')]
Run Code Online (Sandbox Code Playgroud)
我正在尝试1)看看我的元组中的前两个元素(例如a或b)是否与我的元组列表中的前两个元素(z)匹配.2)如果匹配,我想返回元组的第三个元素
所以我想要
myFunc(a,z) -> 'twenty'
myFunc(b,z) -> None
Run Code Online (Sandbox Code Playgroud) 我在vim编辑python文件,你怎么能删除序列throw=it,?在线搜索后,我看到命令daw,但这不适用于这个单词组.
one two three throw=it, now
Run Code Online (Sandbox Code Playgroud) 我想将pandas数据帧附加到CSV文件的末尾.棘手的部分是当我追加行时,有些时候列可能会有所不同.我想要这样的代码
a = pd.DataFrame([[1, 2]], columns= ["one", "two"])
with open("learn.csv", "w") as f:
a.to_csv(f, header=True)
a = pd.DataFrame([[1, 2]], columns= ["one", "three"])
with open("learn.csv", "a") as f:
a.to_csv(f)
Run Code Online (Sandbox Code Playgroud)
生成如下所示的CSV文件:
one, two, three
1, 2, None
1, None, 2
Run Code Online (Sandbox Code Playgroud) 我正在使用glm()根据我制作的向量(h1_lines)中的值创建一些不同的模型.我希望sapply为向量中的每个值返回一个模型.相反,我的代码当前返回列表列表,其中列表的一部分是模型.它似乎正在返回我在sapply函数中所做的一切.
train = data.frame(scores=train[,y_col], total=train[,4], history=train[,5], line=train[,6])
h1_lines<- c(65, 70, 75)
models <- sapply(h1_lines, function(x){
temp_set<-train
temp_set$scores<-ifelse(temp_set$scores>x,1,
ifelse(temp_set$scores<x,0,rbinom(dim(temp_set)[1],1,.5)))
mod<-glm(scores ~ total + history + line, data=temp_set, family=binomial)
})
Run Code Online (Sandbox Code Playgroud)
我希望代码能够工作,所以在这些行之后我可以做到:
predict(models[1,], test_case)
predict(models[2,], test_case)
predict(models[3,], test_case)
Run Code Online (Sandbox Code Playgroud)
但是现在我不能这样做导致sapply返回的不仅仅是模型...如果我打印(昏暗(模型))它说模型有30行和3列?
编辑添加问题;
使用下面的建议代码工作得很好,我可以做预测(模型[[1]],test_case),它完美地工作.如何返回/保存模型,以便我可以使用我用来创建模型的密钥访问它们?例如,使用h1_scores可能类似于以下内容:
predict(models[[65]], test_case))
predict(models[[key==65]], test_case)
Run Code Online (Sandbox Code Playgroud) 试图通过pandas和statsmodels进行逻辑回归.不知道为什么我收到错误或如何解决它.
import pandas as pd
import statsmodels.api as sm
x = [1, 3, 5, 6, 8]
y = [0, 1, 0, 1, 1]
d = { "x": pd.Series(x), "y": pd.Series(y)}
df = pd.DataFrame(d)
model = "y ~ x"
glm = sm.Logit(model, df=df).fit()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "regress.py", line 45, in <module>
glm = sm.Logit(model, df=df).fit()
TypeError: __init__() takes exactly 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud) 以下代码显然是多余的,但根据我的经验,我经常使用这种模式.有没有更好的方法在python中执行此操作?
if re.search("at (\d{1,2}):\d{2}", p):
a=re.search("at (\d{1,2}):\d{2}",p).group(1)
Run Code Online (Sandbox Code Playgroud) 有一个更好的方法吗?
a, b, c, = "yyy", "yyy", "yyy"
Run Code Online (Sandbox Code Playgroud)
明显的尝试失败了
a, b, c, = "yyy"
a, b, c = "yyy"*3
Run Code Online (Sandbox Code Playgroud)
从技术上讲,以下工作,但我不认为这是直观的,因为这个逻辑说a,b和c是相同的,而我想要做的就是说它们初始化为相同的值
a=b=c="yyy"
Run Code Online (Sandbox Code Playgroud) python ×8
pandas ×2
regex ×2
csv ×1
dataframe ×1
function ×1
if-statement ×1
lxml ×1
match ×1
r ×1
regression ×1
sapply ×1
sqlalchemy ×1
statsmodels ×1
tuples ×1
unicode ×1
variables ×1
vector ×1
vim ×1
web-scraping ×1