小编Phi*_*ard的帖子

检测数据帧是否具有MultiIndex

我正在构建一个新的方法来解析一个DataFrame与Vincent兼容的格式.这需要一个标准Index(文森特不能解析MultiIndex).

有没有办法检测熊猫DataFrame是否有MultiIndex

In: type(frame)
Out: pandas.core.index.MultiIndex
Run Code Online (Sandbox Code Playgroud)

我试过了:

In: if type(result.index) is 'pandas.core.index.MultiIndex':
        print True
    else:
        print False
Out: False
Run Code Online (Sandbox Code Playgroud)

如果我尝试没有引用,我得到:

NameError: name 'pandas' is not defined
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏.

(一旦我有了MultiIndex,我就会重置索引并将两列合并为表示阶段的单个字符串值.)

python pandas

12
推荐指数
3
解决办法
6573
查看次数

对于受多个密码保护的多用户站点,是否有一种安全的方法可以将React.js与Python Flask后端一起使用

我熟悉Flask构建简单的webapps并使用jinja2作为模板引擎.但是,我想尝试将React.js作为前端.

我看到的将React.js与Python后端一起使用的示例基本上使用它作为API服务器来调用需要包含在React视图中的json.但是,这如何与Flask的身份验证模型和库一起使用?你可以在同一个模板中混合搭配jinja2和React.js来访问会话数据吗?

任何指示或经验,以帮助开始将不胜感激.

javascript python flask reactjs

10
推荐指数
1
解决办法
5807
查看次数

在单个HTML页面上显示多个mpld3导出

我发现这个mpld3包非常出色,可以将matplolib绘图导出为HTML并通过flask应用程序显示.

每个导出都附带了很多JS,如果你想在一个页面中显示多个图表,这似乎是不必要的重复.但是我不熟悉JS以提取相关组件然后循环遍历它们.该.fig_to_dict方法提供了必要的JSON来显示每个图表,但后来我想知道需要JS /模板工作来依次显示每个图表.

我认为只是将每个绘图堆叠成一个大图,但我想将图表布局在单独的DIV中,因此这不是正确的解决方案.

我想我可以看到JS正在做什么来显示它们但我没有足够的知识来修改功能以适应目的.

我没有包含代码,因为我期望这只与有mpld3经验的人有关,但如果需要可以提供一些示例代码.

示例HTML输出mpld3.fig_to_html(fig, template_type="simple"):

<script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
<script type="text/javascript" src="http://mpld3.github.io/js/mpld3.v0.1.js"></script>
<style>
</style>
<div id="fig136845463888164451663379"></div>
<script type="text/javascript">
  var spec136845463888164451663379 = { <snip JSON code> };
  var fig136845463888164451663379 = mpld3.draw_figure("fig136845463888164451663379", spec136845463888164451663379);
</script>
Run Code Online (Sandbox Code Playgroud)

我认为这就像从模板头链接两个核心脚本然后为每个JSON导出创建一个新脚本一样简单.但这对我没有用.

python matplotlib flask

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

没有模型的 Django 管理视图

抱歉,我还没有代码示例,因为我正在尝试弄清楚我的想法是否可以实现。

我正在编写一个 Django 应用程序来管理 Celery 任务。我用于django-celery-beat计划任务,但我想要一个类似的管理界面来启动临时任务,并使用接受参数的表单。我希望它与 IP 一起位于管理部分,因为这就是应用程序所做的全部工作;目前没有其他意见。

所有文档都ModelAdmin基于模型的自定义字段,但我认为该对象不需要存储在模型中,因为它们是瞬态的,并且数据将由 Celery 任务保存。据我从文档中了解到,您无法在不尝试模型的情况下注册自定义管理视图。

我正在寻找的是一个不与模型绑定的自定义视图,这样我就可以在管理部分为这些管理命令创建自定义表单。

我曾经有过的想法:

  • managed = False创建一个虚拟模型Meta
  • 创建一个真实的模型,但永远不要在自定义中访问它ModelForm
  • 只需创建一个视图并将 URL 手动添加到管理部分即可。这可能是最简单的方法,但我一直在避免,因为我不确定需要什么将其绑定到管理员的身份验证系统,或者当其他所有内容自动生成时在管理页面中显示链接。

任何指示表示赞赏。我将测试所有合理的答案并选择最好的作为正确答案,但会对所有回复投票。

编辑:@dejavu_cmd_delt 提出了Flower的很好建议,但如果可能的话,我想将其全部集成到该admin部分中。

python django celery

6
推荐指数
1
解决办法
1534
查看次数

Bokeh中设置的静态路径变量在哪里(对于create_html_snippet)

我正在尝试使用Bokeh的'create_html_snippet'方法在网页中展示pandas/seaborn图.

作为测试,我在这里克隆了@ rpazyaquian的演示回购 - https://github.com/rpazyaquian/bokeh-flask-tutorial/wiki/Rendering-Bokeh-plots-in-Flask.不幸的是,由于创建了回购,因此散景的变化不起作用.

页面上的主要HTML输出完全相同,但显然唯一的散文文件名不同.

唯一的区别在于散景生成的*.embed.js文件.如下面的摘录所示,该文件中的主机/静态路径变量似乎无法正常工作.使用内置的Flask开发服务器和gunicorn进行测试.

这是@ rpazyaquian的Heroku网站上工作版的顶部部分:

var host = "";

var staticRootUrl = "http://localhost:5006/bokeh/static/";
if (host!=""){

    staticRootUrl = host + "/static/";
    var bokehJSUrl = window.location.protocol + "//" + staticRootUrl + "js/bokeh.js";
}
else {
    bokehJSUrl = staticRootUrl +"js/bokeh.js";
}
Run Code Online (Sandbox Code Playgroud)

这是使用Heroku 0.4的无法工作的本地版本:

var host = "";

var staticRootUrl = "http://localhost:5006/bokeh/static/";
if (host!=""){

    staticRootUrl = "//" + host + "/bokehjs/static/";
    var bokehJSUrl = staticRootUrl + "js/bokeh.js";
}
else {
    bokehJSUrl = staticRootUrl +"js/bokeh.js";
}
Run Code Online (Sandbox Code Playgroud)

明显的问题:

  1. 如果使用gunicorn/nginx …

python bokeh

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

使用“ hd”参数将Google OAuth访问限制到一个域(Django / python-social-auth)

我正在为我的公司构建一个内部Webapp,供我使用,并希望使用我们的Google Apps域来管理来自我们公司域用户名(本问题其余部分为example.com)的访问。

我正在使用:

Django==1.9.5
python-social-auth==0.2.19
+ dependencies
Run Code Online (Sandbox Code Playgroud)

通过阅读其他SO问题,我发现可以通过以下设置使用Goog“托管域”(hd)参数:

 SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'hd': 'example.com'}
Run Code Online (Sandbox Code Playgroud)

该参数已成功添加到初始请求中,可以在授予访问权限之前在URL中看到它。

但是,它没有按我预期的那样工作。我已经能够通过两个非公司的电子邮件地址成功进行身份验证。

我是不是误解了“ hd =”参数的工作原理,还是需要限制通过Google Admin仪表板上其他位置的应用程序访问?还是OAuth2流不支持它?

在此先感谢您的帮助。

python django google-oauth2

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

Django/PostgresQL jsonb(JSONField) - 将select和update转换为一个查询

版本:Django 1.10和Postgres 9.6

我试图在没有往返Python的情况下修改嵌套的JSONField密钥.原因是避免竞争条件和多个查询用不同的更新覆盖相同的字段.

我试图链接这些方法,希望Django可以进行单个查询,但它被记录为两个:

原始字段值(仅演示,实际数据更复杂):

from exampleapp.models import AdhocTask

record = AdhocTask.objects.get(id=1)
print(record.log)
> {'demo_key': 'original'}
Run Code Online (Sandbox Code Playgroud)

查询:

from django.db.models import F
from django.db.models.expressions import RawSQL

(AdhocTask.objects.filter(id=25)
                  .annotate(temp=RawSQL(
                      # `jsonb_set` gets current json value of `log` field,
                      # take a the nominated key ("demo key" in this example)
                      # and replaces the value with the json provided ("new value")
                      # Raw sql is wrapped in triple quotes to avoid escaping each quote                           
                      """jsonb_set(log, '{"demo_key"}','"new value"', false)""",[]))
                  # Finally, …
Run Code Online (Sandbox Code Playgroud)

django postgresql json jsonb

3
推荐指数
2
解决办法
1472
查看次数

从 Django jsonfield 中提取嵌套值

有没有办法查询一个对象,从一个JSONField字段中“提取”一段嵌套的数据,然后让它作为 Queryset 的每个实例上的自定义临时字段可用?

在我的用例中,我将来自 Twitter 的 API 的溢出元数据存储在一个data字段中以供以后使用。我希望能够访问嵌套的领域followers_countTwitterPost.data

我已经阅读了有关如何根据嵌套值进行过滤的文档,但没有阅读有关如何在生成查询集时将其提取为临时字段的文档。

同样,我已经阅读了annotate有关创建自定义临时字段的方法的文档,但示例都在简单字段上使用聚合函数,因此不是JSONFields.

在此先感谢您的任何建议。

示例模型:

from django.contrib.postgres.fields import JSONField

class TwitterPost(models.Model):
    id = models.IntegerField()
    data = JSONField()
Run Code Online (Sandbox Code Playgroud)

data字段的示例 JSON 值:

{
  'followers_count': 7172,
  "default_profile_image": false,
  "profile_text_color": "000000"
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做的伪代码:

TwitterPost.objects.annotate(followers_count=instance.data.followers_count)
Run Code Online (Sandbox Code Playgroud)

django postgresql

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