小编Pra*_*ush的帖子

从pandas dataframe获取特定行作为系列

我们如何将特定的过滤行作为系列?

示例数据帧:

>>> df = pd.DataFrame({'date': [20130101, 20130101, 20130102], 'location': ['a', 'a', 'c']})
>>> df
       date location
0  20130101        a
1  20130101        a
2  20130102        c
Run Code Online (Sandbox Code Playgroud)

我需要选择该行,其中locationc 一系列.

我试过了:

row = df[df["location"] == "c"].head(1)  # gives a dataframe
row = df.ix[df["location"] == "c"]       # also gives a dataframe with single row
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,我都不能将该行作为系列.

python pandas

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

过滤dataTables.net,不包含过滤器框输入

我想使用DataTables的过滤功能,但不想使用它们的搜索框.

bFilter下的文档中,它说:

请注意,如果您希望在DataTables中使用过滤,则必须保持"true" - 要删除默认过滤输入框并保留过滤功能,请使用

之后,句子不完整.

我试过了:

var oTable = $('#sortable').dataTable({
    'bPaginate':false,
    'bInfo':false,
    'bFilter': true // displays Search box, setting false removes filter ability all together
});
$('#Accumulate').click(function(){
    oTable.fnFilter("Accumulate");
});
Run Code Online (Sandbox Code Playgroud)

jquery datatables

20
推荐指数
3
解决办法
3万
查看次数

PostgreSQL中的IF函数和MySQL一样

我试图将IF函数从MySQL 复制到PostgreSQL中.

IF函数的语法是IF(condition, return_if_true, return_if_false)

我创建了以下公式:

CREATE OR REPLACE FUNCTION if(boolean, anyelement, anyelement)
   RETURNS anyelement AS $$
BEGIN
    CASE WHEN ($1) THEN
    RETURN ($2);
    ELSE
    RETURN ($3);
    END CASE;
    EXCEPTION WHEN division_by_zero THEN
    RETURN ($3);
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

它适用于大多数事情,if(2>1, 2, 1)但它会引发错误:

if( 5/0 > 0, 5, 0)
Run Code Online (Sandbox Code Playgroud)

致命错误除以零.

在我的程序中,我无法检查分母,因为条件是由用户提供的.

有什么办法吗?也许如果我们可以将第一个参数从布尔值替换为其他东西,因为在这种情况下函数将起作用,因为它将引发并返回异常.

sql postgresql case dynamic plpgsql

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

如何根据Django中的某些字段查找重复记录

我需要在查询集中创建新字段来标记记录是否重复。我将 2 个字段的串联值视为标识符。如果它们在查询集中(连接的字段)出现多次,则该记录被视为重复。

首先,在我的查询集中,我从现有的 2 个字段中创建另一个字段,即案件编号和听证会日期。他们的输出字段名称是 dupe_id

    qs = file.objects.annotate(
            dupe_id=Concat(
                        F('case_no')
                        , F('hearing_date')
                        , output_field=CharField()
            )
        )
Run Code Online (Sandbox Code Playgroud)

然后我测试这个 dupe_id 字段的计数。如果计数大于1,则视为重复

    dupes = qs.values('dupe_id').annotate(dupe_count=Count('dupe_id')).filter(dupe_count__gt=1)
Run Code Online (Sandbox Code Playgroud)

此时,我现在有另一个查询集,其中包含原始查询集中的重复值。以下是从查询集类型的 dupe 对象中看到的记录。它还说明了找到该值的实例数

<QuerySet [{'dupe_id': 'Test Case No.2018-12-26', 'dupe_count': 3}, {'dupe_id': '123452018-12-26', 'dupe_count': 2}]>
Run Code Online (Sandbox Code Playgroud)

现在这就是我遇到一些困难的地方。我的想法是,我将对主查询集进行注释,并使用 dupes 查询集来帮助识别需要标记为重复的记录。

我试过这个:

    qs = qs.annotate(
            dupe_id2 = Value(('duplicate' if dupes.filter(dupe_id__exact=Concat(F('case_no'), F('hearing_date')))[0] else '--'), output_field=CharField())
        )
Run Code Online (Sandbox Code Playgroud)

这只是一个简单的测试,如果在重复查询集中看到连接的值,则该字段将被标记为重复,如果没有,则标记为“--”。

但它似乎并没有按预期工作。所有记录都被标记为重复,即使我有 1 条记录不应被标记为重复。

我还使用条件表达式进行了检查,但无法使用我创建的重复查询集。

如果有更可靠的方法将查询集中的记录标记为重复,请告诉我。

python django

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

Python中的正则表达式替换:将命名组转换为整数

在替换字符串中的模式时,
我特别需要匹配命名组的整数/长值.

案例和我尝试过的案例:

status = {1:'foo', 23:'bar'}
re.sub(
    '<status>(?P<id>\d+)',
    status.get(int(r'\g<id>')), # ValueError: invalid literal for int() with base 10: '\\g<id>'
    # status.get(int(r'\g<id>'.decode())), # ValueError: invalid literal for int() with base 10: '\\g<id>'
    # status.get('%d' % r'\g<id>'), # %d format: a number is required, not str
    'Tom ran: from <status>1 to <status>23')
Run Code Online (Sandbox Code Playgroud)

正常铸造适用于原始弦,int(r'22')但它在上面不起作用?

python regex

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

Clojure 中的连接池

我无法理解本连接池指南中的使用pool-db和功能。connection

(defn- get-pool
    "Creates Database connection pool to be used in queries"
    [{:keys [host-port db-name username password]}]
    (let [pool (doto (ComboPooledDataSource.)
                   (.setDriverClass "com.mysql.cj.jdbc.Driver")
                   (.setJdbcUrl (str "jdbc:mysql://"
                                     host-port
                                     "/" db-name))
                   (.setUser username)
                   (.setPassword password)
                   ;; expire excess connections after 30 minutes of inactivity:
                   (.setMaxIdleTimeExcessConnections (* 30 60))
                   ;; expire connections after 3 hours of inactivity:
                   (.setMaxIdleTime (* 3 60 60)))]
        {:datasource pool}))


(def pool-db (delay (get-pool db-spec)))


(defn connection [] @pool-db)

; usage in code
(jdbc/query …
Run Code Online (Sandbox Code Playgroud)

clojure

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

使用Django queryset在列中搜索多个单词

我有一个自动完成框,需要返回包含输入单词的结果.然而,输入词可以是部分的并且以不同的顺序或位置定位.

例:

数据库列(MySQL)中的值 -

Expected quarterly sales
Sales preceding quarter
Profit preceding quarter
Sales 12 months
Run Code Online (Sandbox Code Playgroud)

现在,如果用户输入,quarter sales那么它应该返回前两个结果.

我试过了:

column__icontains = term  #searches only '%quarter sales% and thus gives no results
column__search = term  #searches any of complete words and also returns last result
**{'ratio_name__icontains':each_term for each_term in term.split()}   #this searches only sales as it is the last keyword argument
Run Code Online (Sandbox Code Playgroud)

通过正则表达式的任何技巧或可能是我在Django中内置的东西,因为这是一个常见的模式?

django django-queryset

0
推荐指数
1
解决办法
2875
查看次数