我非常想在python中的 Dataframe 上执行一个数据分析任务。下面是我的 Dataframe :
df = pd.DataFrame({"Person": ["P1", "P1","P1","P1","P1","P1","P1","P1","P1","P1", "P2", "P2","P2","P2","P2","P2","P2","P2","P2","P2"],
"Activity": ["A", "A", "A", "B", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "A", "A", "B", "A", "B", "A"],
"Time": ["0", "0", "1", "1", "1", "3", "5", "5", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6", "6"]
})
我想
- 找出每人连续重复活动“A”超过2次的组数,以及
- 将连续重复“A“的平均时间计算为每个组的结束时间减去开始时间除以组数
即,目标结果 Dataframe 应如下所示(P1的AVGTime计算为(1-0 + 6-1)/2):
solution = pd.DataFrame({"Person": ["P1", "P2"],
"Activity": ["A", "A"],
"Count": [2, 1],
"AVGTime": [3, 0]})
我知道这里有一个近似的解决方案:https://datascience-stackexchange-com.translate.goog/questions/41428/how-to-find-the-count-of-consecutive-same-string-values-in-a-pandas-dataframe?_x_tr_sl=en&_x_tr_tl=de&_x_tr_hl=de&_x_tr_pto=sc
然而,该解决方案并没有在列上聚合,例如在我的例子中的“Person”。而且,该解决方案似乎也没有很好地执行,因为我有一个大约700万行的 Dataframe 。
我真的很感激任何提示!
2条答案
按热度按时间pw9qyyiw1#
您可以将数据作为流来处理,而无需创建 Dataframe , Dataframe 应该适合内存。我建议尝试convtools库(我必须承认-我是作者)。
由于您已经有了一个 Dataframe ,让我们将其用作输入:
结果:
kdfy810k2#
试试看:
印刷品: