我是Python和Pandas的新手,所以我想这可能是显而易见的,但我就是不明白。
我有一个数据集,其中包含列“ID“(随机数)、“日期”和当天的数据点“活动”
因此,如果我有五个(或X个数量)ID,ID:[1,2,3,4,5],然后每个ID都有运行30天的日期(ID重复30次),
因此ID 1的日期从2018年11月1日到2018年11月30日,2、3等也是如此。最后,我们有一个名为“Activity”的列,它的值可能是0或X〉0。
前3行为[1,2018年11月1,70日]、[1,2018年11月2,45日]、[1,2018年11月3,0日]
所以换句话说,有一个随机的天数,当活动已被记录。
计算每个ID的发生次数(记录了多少天的活动)的最简单方法是什么?或者只计算哪个ID的发生次数最多。
我想嵌套的for循环是可行的方法,但后来我意识到这并不是那么简单,因为我还需要在每次迭代中检查ID是否相同,然后在ID改变时重置它。因此,可能会有一个包含ID但没有重复值的列表,但这开始感觉有点太复杂了,因为这是一件需要检查的小事。
我也知道这可能不是迭代pd.dataframe的正确方法,但你应该明白我的想法。
IDs = [1,2,3,4,5]
i = 1
occ = [0,0,0,0,0]
for ID in IDs:
for row in dataframe:
if i == row[0]:
if row[2] > 0:
occ[i-1] += 1
else:
i = i + 1
if i == 6:
break
`
1条答案
按热度按时间zwghvu4y1#
我使用以下代码创建了一个虚拟 Dataframe :
给我这个 Dataframe :
现在,使用下面的代码,我可以找到活动的“最大”级别(ID为4的用户),并获取第一个索引(索引0)来给予我ID号:
我得到了ID:4,正如我所希望的最大发生次数。
您也可以这样做:
以实现相同的目的。
作为一个通用提示-使用Pandas Dataframe ,大多数解决方案不需要循环和迭代,这就是为什么它是一个快速和有效的工具。