小编Che*_*zer的帖子

获取上一行的值并计算新列pandas python

有没有办法回顾前一行,并计算一个新变量?所以只要前一行是相同的情况是什么(先前的更改) - (当前的更改),并将其归因于新列中的前一个'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)

python pandas

28
推荐指数
1
解决办法
5万
查看次数

如何将烧瓶登录添加到烧瓶管理

登录在我的标准视图上运行良好,管理员运行良好,但我似乎无法将登录添加到我的 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 flask flask-admin

8
推荐指数
1
解决办法
1万
查看次数

如何正确加入python pandas中key为null的地方

是否可以在python pandas中执行key为null的正确连接.也就是说,我可以加入DateFrames来仅生成右边与左边不匹配的值吗?

python pandas

5
推荐指数
1
解决办法
3005
查看次数

flask sqlalchemy bind导致无法解释主键错误

问题我有一个烧瓶应用程序,其中我的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)

python sqlalchemy flask flask-sqlalchemy

5
推荐指数
0
解决办法
656
查看次数

在Python Flask中如何允许用户重新排列列表项并记录在数据库中

我有一个 Flask sqlalchemy bootsrap 应用程序。我的模板在表格中呈现一个项目列表,我希望用户能够重新排列这些项目。这些项目通过标准 jinja2 显示

 {% for item in List %}
 {{item}}
  {%end for%}
Run Code Online (Sandbox Code Playgroud)

那么我如何允许用户重新排列对象的顺序,然后记录这些更改?

我的一个想法是让jquery 可排序以允许重新排列,然后将新值发送到我的数据库(在提交时或在重新排列时)。

但是,我如何编写 sqlalchemy 语句来更新数据库中的相应行?javascript 和 python 之间的部分是什么,我可以在其中确定数据库中要更改的行?

python flask flask-sqlalchemy flask-wtforms

4
推荐指数
1
解决办法
1887
查看次数

在现有数据库周围的flask sqlalchemy示例

问题:需要有一个完整的工作示例,将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)

python flask flask-sqlalchemy

4
推荐指数
1
解决办法
4817
查看次数

按日期标记熊猫分组中的最后一条记录python

我想基于'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)

python pandas

3
推荐指数
1
解决办法
699
查看次数

用pandas读取丢失日期的最安全的方法read_csv - 给定的空白空间变成今天的日期错误

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不是一致的值时)?

python pandas

3
推荐指数
1
解决办法
1835
查看次数

从测试文件夹导入烧瓶模块失败

如何导入位于(在测试文件夹外)的模块,然后返回我的应用程序文件夹结构?

在 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 文件而不是文件夹。这是最好的方法吗?如果不是,我的测试文件夹应该放在哪里?它让我发疯。

python flask

3
推荐指数
1
解决办法
2019
查看次数

使用pandas检查列的第一个数字

问题
我需要测试列中每个数字的第一个数字以了解条件.

条件
是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)

python pandas

2
推荐指数
1
解决办法
2762
查看次数