我们如何将特定的过滤行作为系列?
示例数据帧:
>>> 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)
我需要选择该行,其中location是c 一系列.
我试过了:
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)
在任何一种情况下,我都不能将该行作为系列.
我想使用DataTables的过滤功能,但不想使用它们的搜索框.
请注意,如果您希望在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) 我试图将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)
致命错误除以零.
在我的程序中,我无法检查分母,因为条件是由用户提供的.
有什么办法吗?也许如果我们可以将第一个参数从布尔值替换为其他东西,因为在这种情况下函数将起作用,因为它将引发并返回异常.
我需要在查询集中创建新字段来标记记录是否重复。我将 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 条记录不应被标记为重复。
我还使用条件表达式进行了检查,但无法使用我创建的重复查询集。
如果有更可靠的方法将查询集中的记录标记为重复,请告诉我。
在替换字符串中的模式时,
我特别需要匹配命名组的整数/长值.
案例和我尝试过的案例:
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')但它在上面不起作用?
我无法理解本连接池指南中的使用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) 我有一个自动完成框,需要返回包含输入单词的结果.然而,输入词可以是部分的并且以不同的顺序或位置定位.
例:
数据库列(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中内置的东西,因为这是一个常见的模式?