假设有两行,如名称和标记,如下所示:
Names Marks
Sriyam [10]
Epali [10]
Sriyam [12,13]
Rajendra [10]
Shankar [10]
Epali [13,14]
如何使用group by,lambda和zip函数编写查询,使新结果看起来像下面这样:在这里,它将在列中添加相应名称的值,并在单个变量中求和,并将唯一名称写入一次,如下所示:
names marks
Sriyam [35]
Epali [37]
Rajendra [10]
Shankar [10]
4条答案
按热度按时间wfsdck301#
使用
itertools.chain
和sum
:输出:
或者,如果你真的想要一个列表作为输出:
输出:
合并列表(高效!)
输出:
不同进路的时序
聚合为和
运行时间越短越好。
正如预期的那样,使用
sum
合并列表的两个解决方案(@Homayoon和@SomeDude)具有二次复杂度。@Chrise和我的解决方案效率更高,但explode
比itertools.chain
成本更高。合并列表
9gm1akwq2#
试试这个:
我希望你在Pandas中想要这个:D
sigwle7e3#
您可以:
输出:
p1tboqfb4#
下面是另一种使用explode的方法
输出
如果您希望它们是合并列表
输出