Pandas:用同一个月对所有行求和

2024-10-03 21:25:01 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据:

| student      | performance | competititon | month   |
|--------------|-------------|--------------|---------|
| Aardvark     | 11          | A            | 2019-01 |
| Aardvark     | 13          | B            | 2019-01 |
| Jason Derulo | 11          | A            | 2019-01 |
| Jason Derulo | 15          | B            | 2019-01 |
| Jason Derulo | 22          | C            | 2019-02 |
| JP Saxe      | 11          | A            | 2019-01 |
| JP Saxe      | 23          | B            | 2019-01 |
| JP Saxe      | 32          | C            | 2019-02 |

我想要以下结果:

| student      | aggregate performance | month   |
|--------------|-----------------------|---------|
| Aardvark     | 24                    | 2019-01 |
| Jason Derulo | 26                    | 2019-01 |
| Jason Derulo | 22                    | 2019-02 |
| JP Saxe      | 34                    | 2019-01 |
| JP Saxe      | 32                    | 2019-02 |

简言之,我要把业绩一栏的总和,不计竞争,为每个月,编入一个新的清单。你知道吗

我试过像wheregroupbysum这样的方法,但我似乎不能完全得到我想要的。你知道吗


Tags: 数据performancewherestudentaggregatejpgroupby总和
6条回答

制作自己的防病毒软件有什么意义?这是一个很大的工作,但我想这将是很酷的,如果你让它成为一个便携式的块,并删除所有更讨厌的。如果必须坚持,ClamAV,它是一个开源的,很好的AV(没有实时保护),但是用C++编程。p>

我认为这种控制在Java中是不可能的,主要是因为它使用虚拟机,并且不受操作系统的影响。或者更确切地说,操作系统被屏蔽,不受Java虚拟机的影响。这是故意的

为了清晰起见,进行了编辑添加:我假设您希望用Java编写整个解决方案,而不是混合语言

对操作系统产生这样的影响是可能的。唯一的问题是,您将失去平台独立性,或者至少必须为每个给定平台编写代码,因为这样的操作需要对系统进行相当深入的访问,这可以通过JNI实现,这将把您使用的方法与操作系统联系起来

我甚至不相信它能与JNI合作

在操作系统启动新进程(或写入文件或其他)时进行“拦截”的情况下,您需要编写某种与操作系统挂钩的驱动程序或内核模块。这个驱动程序/模块肯定是用本机编译代码编写的。因此,操作系统是这里的负责人,最终将调用您的本机模块

所以,在我看来,这里甚至没有涉及Java

这是最基本的方法。在Linux中使用类似pam的东西是可能的,它可以配置为执行几乎任何与安全性和文件/进程权限相关的操作,并且可以调用其他进程来完成其任务。不过,为操作系统试图启动的每个新进程运行一个JVM实例似乎有些牵强

正如HalloDu所说,使用JNI在技术上是可行的。然而,在IIRC中,大多数防病毒程序使用某种驱动程序拦截打开的文件,并在允许操作系统继续使用该文件之前对其进行扫描。在这种情况下,您必须编写的本机代码(用C或可能是C++)的数量将是巨大的,并且可能在大小上超过Java代码

在编写低级应用程序时,我会坚持使用C。然而,用更高级的语言编写GUI之类的东西可能是有意义的,尽管Java也不是我的选择,因为与C接口有点痛苦。就我个人而言,我会用C做所有该死的事情,因为混合语言往往是一种痛苦。如果我混合语言,我的选择将是C和python,因为ctypes使与C的接口变得非常简单

使用JNI是可能的。不过,您主要使用Java作为GUI,使用C/C++进行任何其他类型的防病毒工作

相关问题 更多 >