有没有办法回顾前一行,并计算一个新变量?所以只要前一行是相同的情况是什么(先前的更改) - (当前的更改),并将其归因于新列中的前一个'ChangeEvent'?
这是我的DataFrame
>>> df
ChangeEvent StartEvent case change open
0 Homeless Homeless 1 2014-03-08 00:00:00 2014-02-08
1 other Homeless 1 2014-04-08 00:00:00 2014-02-08
2 Homeless Homeless 1 2014-05-08 00:00:00 2014-02-08
3 Jail Homeless 1 2014-06-08 00:00:00 2014-02-08
4 Jail Jail 2 2014-06-08 00:00:00 2014-02-08
Run Code Online (Sandbox Code Playgroud)
添加列
Jail Homeless case
0 6 1
0 30 1
0 0 1
Run Code Online (Sandbox Code Playgroud)
... 等等
这是df构建
import pandas as pd
import datetime as DT
d = {'case' : pd.Series([1,1,1,1,2]),
'open' : pd.Series([DT.datetime(2014, 3, 2), …Run Code Online (Sandbox Code Playgroud) 登录在我的标准视图上运行良好,管理员运行良好,但我似乎无法将登录添加到我的 admin/yikes !
看起来很简单的烧瓶管理文档但是当我添加这个部分时
class MyView(BaseView):
def is_accessible(self):
return login.current_user.is_authenticated()
def _handle_view(self, name, **kwargs):
if not self.is_accessible():
return redirect(url_for('login', next=request.url))
Run Code Online (Sandbox Code Playgroud)
我不会被发送到未经身份验证的用户的登录页面。
知道我还需要做什么吗?
这在我的init文件中看起来正确吗?
from flask.ext.admin import BaseView
class MyView(BaseView):
def is_accessible(self):
return login.current_user.is_authenticated()
def _handle_view(self, name, **kwargs):
if not self.is_accessible():
return redirect(url_for('login', next=request.url))
app = Flask(__name__)
app.config.from_object('config')
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
Bootstrap(app)
from app import views, models
admin = Admin(app)
admin.add_view(ModelView(models.User, db.session))
admin.add_view(ModelView(models.rutable, db.session))
admin.add_view(ModelView(models.rustage, db.session))
admin.add_view(ModelView(models.TOC, db.session))
admin.add_view(ModelView(models.Request, db.session))
admin.add_view(ModelView(models.Staff, …Run Code Online (Sandbox Code Playgroud) 是否可以在python pandas中执行key为null的正确连接.也就是说,我可以加入DateFrames来仅生成右边与左边不匹配的值吗?
问题我有一个烧瓶应用程序,其中我的sqlalchemy reflect()对SQLALCHEMY_BINDS指定的绑定的工作方式与对SQLALCHEMY_DATABASE_URI的工作方式不同.
结果 SQLALCHEMY_BINDS不会自动映射我的架构.
我有两个数据库,如我的config.py中所示
SQLALCHEMY_DATABASE_URI = 'postgresql://chet@localhost/ubuntuweb'
SQLALCHEMY_BINDS = {
'test': 'postgresql://chet@localhost/warehouse',
}
Run Code Online (Sandbox Code Playgroud)
我在db db中放入的db是精简的,并且使用reflect()工作没有任何问题
from app import db
from sqlalchemy.orm import relationship, backref
db.Model.metadata.reflect(db.engine)
class rutable(db.Model):
__table__ = db.Model.metadata.tables['rutable']
Run Code Online (Sandbox Code Playgroud)
当我在models.py中添加此代码时
class test1(db.Model):
__bind_key__ = 'test'
__table__ = db.Model.metadata.tables['test1']
results in this error
__table__ = db.Model.metadata.tables['test1']
KeyError: 'test1'
Run Code Online (Sandbox Code Playgroud)
但这很有效
class test1(db.Model):
__bind_key__ = 'test'
__tablename__ = 'test1'
id = db.Column(db.Integer, primary_key=True)
test = db.Column(db.String(80), unique=True)
Run Code Online (Sandbox Code Playgroud)
它很棒.这是架构的完整映射.我想利用不需要手动写出变量.当我减少它
class test1(db.Model):
__bind_key__ = 'test'
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪
sqlalchemy.exc.InvalidRequestError: Class <class 'app.models.test1'>
does not …Run Code Online (Sandbox Code Playgroud) 我有一个 Flask sqlalchemy bootsrap 应用程序。我的模板在表格中呈现一个项目列表,我希望用户能够重新排列这些项目。这些项目通过标准 jinja2 显示
{% for item in List %}
{{item}}
{%end for%}
Run Code Online (Sandbox Code Playgroud)
那么我如何允许用户重新排列对象的顺序,然后记录这些更改?
我的一个想法是让jquery 可排序以允许重新排列,然后将新值发送到我的数据库(在提交时或在重新排列时)。
但是,我如何编写 sqlalchemy 语句来更新数据库中的相应行?javascript 和 python 之间的部分是什么,我可以在其中确定数据库中要更改的行?
问题:需要有一个完整的工作示例,将sqlalchemy自动映射到具有多个绑定的应用程序中的现有数据库.
我想绑定到两个数据库,并有一个自动映射表.我需要这样做,因为我无法控制一个数据库,因此必须不断重写我的模型,并且每次迁移时都可能删除新表.
我喜欢这里给出的答案,但我似乎无法使它在Flask中运行(我只能使用sqlalchemy来查询示例).
我从上面的例子中设置的model.py导致了
编辑 我拉线
db.Model.metadata.reflect[db.engine]
Run Code Online (Sandbox Code Playgroud)
从另一篇文章中,它应该是db.Model.metadata.reflect(db.engine)非常简单的解决方案
这是我的model.py
from app import db
from sqlalchemy.orm import relationship
db.Model.metadata.reflect[db.engine]#change to (db.engine)
class Buildings(db.Model):
__table__ = db.Model.metadata.tables['test']
__bind_key__ = 'chet'
def __repr__(self):
return self.test1
.... other models from sqlalchemy uri here...
Run Code Online (Sandbox Code Playgroud)
我明白了
>>> from app import db, models
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "app/__init__.py", line 69, in <module>
from app import views, models
File "app/views.py", line 1, in <module>
from app import …Run Code Online (Sandbox Code Playgroud) 我想基于'lst_svc'标记组['ru','case','opdate']中的最后一条记录
这是我的尝试(有问题,因为重复项被计数了两次)。
import pandas as pd
from datetime import datetime
# Create Dateframe
d = {'ru' : pd.Series([1., 1., 1., 1., 3, 3]),
'case' : pd.Series([2., 2., 2., 2., 2, 2]),
'opdate' : pd.Series([datetime(2012, 5, 2), datetime(2012, 5, 2), datetime(2012, 5, 2),datetime(2012, 5, 2), datetime(2012, 5, 3),datetime(2012, 5, 3)]),
'lst_svc': pd.Series([datetime(2012, 5, 2), datetime(2012, 5, 3), datetime(2012, 5, 5),datetime(2012, 5, 5),datetime(2012, 6, 5),])}
df = pd.DataFrame(d)
# Mark last
df['lastMark'] = (df.groupby(['ru','case','opdate'])['lst_svc'].transform(max) == df['lst_svc']).astype(int)
Run Code Online (Sandbox Code Playgroud)
DataFrame看起来像这样:
case lst_svc opdate ru
0 …Run Code Online (Sandbox Code Playgroud) py2.7 pandas version .13
读取csv并将列转换为日期的最安全的方法是什么.我注意到在我的情况下,日期列中的空格被转换为今天的日期.为什么?
这是我的csv数据
fake_file = StringIO.StringIO("""case,opdate,
7,10/18/2006,
7,10/18/2008,
621, ,""")
Run Code Online (Sandbox Code Playgroud)
这是我的代码
df=pd.DataFrame(pd.read_csv('path.csv',parse_dates=['opdate']))
Run Code Online (Sandbox Code Playgroud)
用今天的日期悲惨填满白色空间!
df=pd.DataFrame(pd.read_csv('path.csv',parse_dates=['opdate'],na_values=' '))
Run Code Online (Sandbox Code Playgroud)
工作,但我真的必须知道它总是'',而不是说''或'null'.
转换日期和保留空值最安全的方法是什么(特别是当null不是一致的值时)?
如何导入位于(在测试文件夹外)的模块,然后返回我的应用程序文件夹结构?
在 app_test.py 文件夹中我想要
from app.models import User
Run Code Online (Sandbox Code Playgroud)
跑步
/bin/python app_test.py
Run Code Online (Sandbox Code Playgroud)
我得到
no modules named app.models
Run Code Online (Sandbox Code Playgroud)
我有一个 app_test.py 文件,在我做了一些改组之前它一直有效,现在我不确定为什么我的导入在从我的测试文件夹运行测试时不起作用。我进入了我的应用程序主文件夹,这是基本布局减去多余的文件夹/文件:
/application
/(leaving out folders bin build lib local...)
/src
/test
__init__.py
app_test.py
/app
models.py
forms.py
__init__.py
views.py
/static
/templates
/tmp
Run Code Online (Sandbox Code Playgroud)
我的导入应该是什么?我注意到大型教程只使用 test.py 文件而不是文件夹。这是最好的方法吗?如果不是,我的测试文件夹应该放在哪里?它让我发疯。
问题
我需要测试列中每个数字的第一个数字以了解条件.
条件
是checkVar的第一个数字大于5或者是checkVar的第一个数字小于2
然后设置newVar = 1
解
有人认为我曾经将其转换为字符串,留下空格,然后取[0],但我无法弄清楚代码.
也许是这样的,
df.ix[df.checkVar.str[0:1].str.contains('1'),'newVar']=1
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,由于某种原因我得到了这个错误
invalid index to scalar variable.
Run Code Online (Sandbox Code Playgroud)
测试我的原始变量我得到的值应符合条件
df.checkVar.value_counts()
301 62
1 15
2 5
999 3
dtype: int64
Run Code Online (Sandbox Code Playgroud)
理想情况下,它看起来像这样:
checkVar newVar
NaN 1 nan
2 nan
3 nan
4 nan
5 301.0
6 301.0
7 301.0
8 301.0
9 301.0
10 301.0
11 301.0
12 301.0
13 301.0
14 1.0 1
15 1.0 1
Run Code Online (Sandbox Code Playgroud)
更新
我的最终解决方案,因为实际问题更复杂
w = df.EligibilityStatusSP3.dropna().astype(str).str[0].astype(int)
v = df.EligibilityStatusSP2.dropna().astype(str).str[0].astype(int)
u = df.EligibilityStatusSP1.dropna().astype(str).str[0].astype(int)
t = df.EligibilityStatus.dropna().astype(str).str[0].astype(int) #get …Run Code Online (Sandbox Code Playgroud)