我有一个(标签,计数)元组列表,如下所示:
[('grape', 100), ('grape', 3), ('apple', 15), ('apple', 10), ('apple', 4), ('banana', 3)]
Run Code Online (Sandbox Code Playgroud)
从那里我想要使用相同的标签(相同的标签始终相邻)对所有值求和,并以相同的标签顺序返回一个列表:
[('grape', 103), ('apple', 29), ('banana', 3)]
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式解决它:
def group(l):
result = []
if l:
this_label = l[0][0]
this_count = 0
for label, count in l:
if label != this_label:
result.append((this_label, this_count))
this_label = label
this_count = 0
this_count += count
result.append((this_label, this_count))
return result
Run Code Online (Sandbox Code Playgroud)
但是,有更多Pythonic /优雅/有效的方法吗?
我有一个表可能有两列null(以及其他一些列).我想计算有多少行,其中列a,b,两列都没有设置为null.
在一个查询中,Oracle可以实现这一点吗?或者我是否必须为每个创建一个查询?例如,不能使用group by或其他一些我可能不知道的东西?
我有一个"日期"向量,其中包含以mm/dd/yyyy格式表示的日期:
head(Entered_Date,5)
[1] 1/5/1998 1/5/1998 1/5/1998 1/5/1998 1/5/1998
Run Code Online (Sandbox Code Playgroud)
我试图根据日期绘制频率变量,但我想按月或年分组日期.就像现在一样,每天有一个频率,但我想按月或年绘制频率.因此,对于1/5/1998,1为1/7/1998和3为1/8/1998,频率为1,我想将其显示为1为1/1998.这是一个相对较大的数据集,从1998年到现在的日期,我想找到一些自动化的方法来实现这一目标.
> dput(head(Entered_Date))
structure(c(260L, 260L, 260L, 260L, 260L, 260L), .Label = c("1/1/1998",
"1/1/1999", "1/1/2001", "1/1/2002", "1/10/2000", "1/10/2001",
"1/10/2002", "1/10/2003", "1/10/2005", "1/10/2006", "1/10/2007",
"1/10/2008", "1/10/2011", "1/10/2012", "1/10/2013", "1/11/1999",
"1/11/2000", "1/11/2001", "1/11/2002", "1/11/2005", "1/11/2006",
"1/11/2008", "1/11/2010", "1/11/2011", "1/11/2012", "1/11/2013",
"1/12/1998", "1/12/1999", "1/12/2001", "1/12/2004", "1/12/2005", ...
Run Code Online (Sandbox Code Playgroud) 我正在为我正在创建的定制应用程序编写Excel导出器,我对C#中的LINQ分组有疑问.
基本上,这个新的Excel导出器类有两个日期.然后,该班级检索此日期范围之间的所有托运.
作为此导出器的一部分,我需要能够将日期分组为几周,并获取该周的值.因此,例如,如果我给了07/12/2011和22/12/2011(dd/MM/yyyy格式),我需要将它们之间的所有货物分组为几周(每周从星期日开始).使用上述日期的理想结果是
Week 1: (consignments between 04/12/2011 and 10/12/2011)
Week 2: (consignments between 11/12/2011 and 17/12/2011)
Week 3: (consignments between 18/11/2011 and 24/12/2011)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个enum叫Example"如下"的"班级" :
enum Example {
//enums belonging to group A:
enumA1,
enumA2,
enumA3,
//enums belonging to group B:
enumB1,
enumB2,
enumB3,
//enums belonging to group C:
enumC1,
enumC2,
enumC3;
}
Run Code Online (Sandbox Code Playgroud)
对我的项目来说,重要的是他们所使用的所有枚举都属于Example(因为这是类的构造函数中的参数).
如何使用enum层次结构/嵌套来实现以下目标:
测试是否属于enumA,B或C组的方法.例如,类似于Example.enumA1.isGroupBelonging(Group.A)或isGroupBelonging(Example.enumA1,Group.A)将是返回true的公共方法.
能够对组的子组做同样的事情A,B并且C.例如,组A可能有子组a,b和c.然后我想要一个方法,做一些像Example.enumA1.isSubGroupBelonging(SubGroup.a)这样的东西public boolean.
一种方法来完成所有这些,而不需要一些精心设计的enum名称堵塞我的代码.例如,能够Example.enumA1在我的其他类中引用而不需要使用类似Example.enumA1(Group.A,SubGroup.a)或类似的东西来引用它将是很好的Example.enumA1.Group.A.SubGroup.a
我有这种格式的巨大元组列表.每个元组的第二个字段是类别字段.
[(1, 'A', 'foo'),
(2, 'A', 'bar'),
(100, 'A', 'foo-bar'),
('xx', 'B', 'foobar'),
('yy', 'B', 'foo'),
(1000, 'C', 'py'),
(200, 'C', 'foo'),
..]
Run Code Online (Sandbox Code Playgroud)
将其分解为同一类别(A,B,C等)的子列表的最有效方法是什么?
我有一个包含大约200列的数据框,其中我想要将表格分组前10个左右,这些是因子并将其余列相加.
我有我要分组的所有列名列表以及我想要聚合的所有列的列表.
我正在寻找的输出格式需要是相同数量的cols的相同数据帧,只是组合在一起.
有没有使用包解决方案data.table,plyr或任何其他?
我有一张表如下:
> testsizes
size value replicate lane
361 16 6898 1 L1
362 17 10707 1 L1
363 18 1786 1 L1
364 19 1721 1 L1
365 20 2454 1 L1
421 16 8486 2 L1
422 17 26691 2 L1
423 18 3241 2 L1
424 19 5068 2 L1
425 20 7579 2 L1
481 16 4152 3 L1
482 17 4452 3 L1
483 18 899 3 L1
484 19 1973 3 L1
485 20 2595 …Run Code Online (Sandbox Code Playgroud) 我们来看一个叫做的课Cls:
public class Cls
{
public int SequenceNumber { get; set; }
public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,让我们使用以下元素填充一些集合:
Sequence Number Value ======== ===== 1 9 2 9 3 15 4 15 5 15 6 30 7 9
我需要做的是枚举序列号并检查下一个元素是否具有相同的值.如果是,则汇总值,因此,所需的输出如下:
Sequence Sequence Number Number From To Value ======== ======== ===== 1 2 9 3 5 15 6 6 30 7 7 9
如何使用LINQ查询执行此操作?
我在SQL Server中有以下表:
-----------------------------
ID Age Gender
1 30 F
2 35 M
3 32 M
4 18 F
5 21 F
Run Code Online (Sandbox Code Playgroud)
我需要做的是执行一个查询,该查询将给定范围内的记录分组并计算出现的次数.结果需要稍后在直方图(条形图)中显示.我尝试了类似以下的查询:
SELECT
count(CASE WHEN Age>= 10 AND Age < 20 THEN 1 END) AS '10 - 20',
count(CASE WHEN Age>= 21 AND Age < 30 THEN 1 END) AS '21 - 30',
count(CASE WHEN Age>= 31 AND Age < 35 THEN 1 END) AS '31 - 35',
count(CASE WHEN Age>= 36 AND Age < 40 THEN 1 END) AS …Run Code Online (Sandbox Code Playgroud)