我是Python的新手,我想知道是否有一种方法可以使用基于数字模式的条件语句.例如,如果我有一个数值列表,例如:
583201
584068
485027
581047
Run Code Online (Sandbox Code Playgroud)
我正在根据这些数字向变量"x"输出一个值,如何将值1分配给以"58"开头的所有值?
我试过这个:
import re
def Classify(SIC12):
if re.search(7389*,SIC12):
return 1
else:
return 0
Run Code Online (Sandbox Code Playgroud)
但看起来搜索功能仅适用于字符串.有没有办法做这样的事情?
我使用Proc SQL的知识应该允许您绕过PRINT过程并自动打印输出,但由于某种原因输出没有显示.我的输出目标处于活动状态,我的日志没有错误.这是我的代码.
proc sql;
create table merged as
select *
from gram as g, nos as n
where g.cash = n.weight;
quit;
Run Code Online (Sandbox Code Playgroud)
日志只是说过程时间和行/变量计数.没有错误.但它没有出现在输出窗口中.我不确定是什么问题.
假设我有两张桌子.一个表包含员工信息和员工获得晋升的日期:
Emp_ID Promo_Date
1 07/01/2012
1 07/01/2013
2 07/19/2012
2 07/19/2013
3 08/21/2012
3 08/21/2013
Run Code Online (Sandbox Code Playgroud)
另一张桌子每天都有员工关闭销售:
Emp_ID Sale_Date
1 06/12/2013
1 06/30/2013
1 07/15/2013
2 06/15/2013
2 06/17/2013
2 08/01/2013
3 07/31/2013
3 09/01/2013
Run Code Online (Sandbox Code Playgroud)
我想加入这两个表,以便我只包括小于最大促销日期的销售日期.所以结果看起来像这样
Emp_ID Sale_Date Promo_Date
1 06/12/2013 07/01/2012
1 06/30/2013 07/01/2012
1 06/12/2013 07/01/2013
1 06/30/2013 07/01/2013
Run Code Online (Sandbox Code Playgroud)
对于其余的Emp_IDs依此类推.我尝试使用左连接来实现这一点
left join SalesTable on PromoTable.EmpID = SalesTable.EmpID and Sale_Date
< max(Promo_Date) over (partition by Emp_ID)
Run Code Online (Sandbox Code Playgroud)
但显然我不能在连接中使用聚合,我已经知道我也不能在where语句中使用它们.我不知道怎么办这个.
所以我有一张表,其ID值和日期看起来像这样:
ID Date
0001 1/1/2012
0002 1/2/2010
0002 1/2/2011
0001 1/1/2011
0001 1/1/2010
0002 1/2/2012
Run Code Online (Sandbox Code Playgroud)
基本上,ID值仅对那一年是唯一的-它们会重置下一年。
我希望能够按ID值和日期排序,但是我想进行排序,以便按年份对值进行排序。只是带有辅助日期排序的常规ID会产生以下结果:
ID Date
0001 1/1/2010
0001 1/1/2011
0001 1/1/2012
0002 1/2/2010
0002 1/2/2011
0002 1/2/2012
Run Code Online (Sandbox Code Playgroud)
但是我想要一个查询,该查询生成一个看起来像这样的表:
ID Date
0001 1/1/2010
0002 1/2/2010
0001 1/1/2011
0002 1/2/2011
0001 1/1/2012
0002 1/2/2012
Run Code Online (Sandbox Code Playgroud)
这可能吗?