我需要帮助解决一些大熊猫的问题。你知道吗
为了回答这个问题,很多人都要求获得真实的投入和真实的期望产出,结果是: 所以我有下面的数据帧
Date user cumulative_num_exercises total_exercises %_exercises
2017-01-01 1 2 7 28,57
2017-01-01 2 1 7 14.28
2017-01-01 4 3 7 42,85
2017-01-01 10 1 7 14,28
2017-02-02 1 2 14 14,28
2017-02-02 2 3 14 21,42
2017-02-02 4 4 14 28,57
2017-02-02 10 5 14 35,71
2017-03-03 1 3 17 17,64
2017-03-03 2 3 17 17,64
2017-03-03 4 5 17 29,41
2017-03-03 10 6 17 35,29
%_exercises_accum
28,57
42,85
85,7
100
14,28
35,7
64,27
100
17,64
35,28
64,69
100
-列%\u exercises是该列的值(累计\u num\u exercises/总\u exercises)*100 -%\u exercises\u acum列是每个月%\u exercises之和的值。(请注意,在每个月底,它都会达到值100)。你知道吗
-我需要用这些数据计算每个月参与锻炼的用户的百分比,占锻炼总数的50%、80%和90%。你知道吗
-为了做到这一点,我想创建一个新的列,称为category,稍后将用于计算3个百分比(50%、80%和90%)中每个百分比的贡献用户数。“类别”列采用以下值:
如果用户执行了%\u\u acum=0,则为0。
1如果用户进行了%\u累计<;50和>;0。
50如果用户做了%\u\u acum=50。
80如果用户做了%\u\u acum=80。
90如果用户做了%\u\u acum=90。
以此类推,因为有很多案例是为了确定谁对每个月锻炼总次数的贡献率。你知道吗
我已经确定了所有的案例和必须采取的所有价值观。你知道吗
基本上,我使用for循环和两个主ifs遍历数据帧:
如果(测向iloc[i] [日期]==测向iloc[i] [日期].shift()):
计算以确定用户从同一个月组的第二行到最后一行所贡献的百分比 (因为同一个用户可以贡献所有百分比,也可以贡献多个百分比)
其他:
计算以确定第一个练习的百分比 各成员 月组贡献。你知道吗
计算包括:
使用shift()查看前一行中category列的值。
在for中执行while循环,因为当一个用户突然达到一个很大的百分比时,我们需要返回同一个月的用户,并将其category\u列值更改为50,因为他们贡献了50%,但没有达到。例如,在这种情况下:
累计%日期 2017-01-01 1,24 2017-01-01 3,53 2017-01-01 20,25 2017-01-01 55,5
问题开始处给定数据帧的所需输出将包括与之前相同的列(日期、用户、累计\u num \u练习、总计\u练习、%\u练习和%\u练习\u累计)以及类别列,如下所示:
category
50
50
508090
90
50
50
5080
8090
50
50
5080
8090
请注意,值为508090或8090的行表示该用户正在参与创建:
508090:一个月锻炼总量的50%、80%和90%。
8090:一个月锻炼的80%和90%。
有人知道如何通过逐个对象遍历一组对象的组来简化for循环吗?你知道吗
非常感谢!你知道吗
由于不知道你希望完成什么计算,这是我最好的猜测你在寻找什么。不过,我要再次重申Datanovice's point,获得答案的最佳方法是提供一个示例输出。你知道吗
您可以使用以下代码对每个唯一的日期进行切片:
相关问题 更多 >
编程相关推荐