小编Jul*_*ago的帖子

从合并 int 计算返回 varchar 值

我是一名新手,正在学习使用数据库的 T-SQL 方法AdventureWorks2012。我使用的是 SQL Server 2014,不过如果有一个也适用于 2008 的解决方案就太好了。我得到了以下练习:

使用 Sales.SpecialOffer 表编写查询。显示 MinQty 和 MaxQty 列以及 SpecialOfferID 和 Description 列之间的差异。

问题是,MaxQty允许空值,所以我试图为输出提出一个不涉及将空值留在其中的现实世界解决方案。但是,当我尝试使用合并返回“No Max”时(是的,我知道我可以将 NULL 保留在那里,但我试图看看是否可以解决这个问题),我收到的消息是值varchar“ No Max' 无法转换为数据类型int。我假设这是因为MaxQty - MinQtyasint优先?

select 
    specialofferid
    , description
    , coalesce((maxqty - minqty),'No Max') 'Qty_Difference'
from 
    sales.specialoffer;
Run Code Online (Sandbox Code Playgroud)

错误:

消息 245,级别 16,状态 1,第 135 行
将 varchar 值“No max”转换为数据类型 int 时转换失败。

我想过只返回一个无意义的整数(0或负数),但这似乎并不完美 - 如果返回 0 我会掩盖结果实际上为零的情况,等等。

想法?

sql sql-server-2008 sql-server-2014-express

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

Python条件导入的设计

我是 Python 条件导入新手,正在考虑两种模块设计方法。我很乐意了解为什么我可能想要选择其中一种(或者是否存在更好的替代方案)。

问题

我有一个程序需要在不同条件下调用结构相同但不同的模块。这些模块都具有相同的功能、输入、输出等,唯一的区别在于它们在其功能内执行的操作。例如,

# module_A.py
def get_the_thing(input):
    # do the thing specific to module A
    return thing

# module_B.py
def get_the_thing(input):
    # do the thing specific to module B
    return thing
Run Code Online (Sandbox Code Playgroud)

选项1

根据输入值,我将根据此答案有条件地导入适当的模块。

if val == 'A':
    import module_A
if val == 'B':
    import module_B
Run Code Online (Sandbox Code Playgroud)

选项2

我使用输入变量将模块名称生成为字符串,然后使用此方法根据该字符串从正确的模块调用该函数。我相信这需要我首先导入所有模块。

import module_A
import module_B

in_var = get_input() # Say my input variable is 'A', meaning use Module A
module_nm = 'module_' + in_var
function_nm = 'get_the_thing'

getattr(globals()[module_nm], …
Run Code Online (Sandbox Code Playgroud)

python design-patterns module

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

sklearn normalize() 将每个值生成为 1

我试图将单个特征归一化为 [0, 1],但我返回的结果是所有浮点值都为 1,这显然是错误的。

import pandas as pd
import numpy as np
from sklearn.preprocessing import normalize

test = pd.DataFrame(data=[7, 6, 5, 2, 9, 9, 7, 8, 6, 5], columns=['data'])
normalize(test['data'].values.reshape(-1, 1))
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出:

array([[1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.],
       [1.]])
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一个 int to float 数据类型问题,所以我尝试首先转换为 float normalize(test['data'].astype(float).values.reshape(-1, 1)),但这给出了相同的结果。我错过了什么?

python normalization pandas scikit-learn

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