[英]count function within for loop python
I would like to create a count function based on a date.我想根据日期创建一个计数 function 。 So it should start to count from 1 upwards till a new date is found in the dataset and then starts to count from 1 again, see example dataset and expected outcome below for an example:因此,它应该从 1 开始向上计数,直到在数据集中找到一个新日期,然后再次从 1 开始计数,请参阅下面的示例数据集和预期结果示例:
data= pd.DataFrame(
[[Timestamp('2022-08-05'), 140, 120],
[Timestamp('2022-08-05'), 160, 155],
[Timestamp('2022-08-06'), 230, 156],
[Timestamp('2022-08-06'), 230, 155],
[Timestamp('2022-08-06'), 230, 160],
[Timestamp('2022-08-06'), 140, 130],
[Timestamp('2022-08-07'), 140, 131],
[Timestamp('2022-08-07'), 230, 170]],
columns=['date', 'power', 'heart rate'])
data_expected = pd.DataFrame(
[[Timestamp('2022-08-05'), 140, 120, 1],
[Timestamp('2022-08-05'), 160, 155, 2],
[Timestamp('2022-08-06'), 230, 156, 1],
[Timestamp('2022-08-06'), 230, 155, 2],
[Timestamp('2022-08-06'), 230, 160, 3],
[Timestamp('2022-08-06'), 140, 130, 4],
[Timestamp('2022-08-07'), 140, 131, 1],
[Timestamp('2022-08-07'), 230, 170, 2]],
columns=['date', 'power', 'heart rate', 'count'])
what would be the best way to approach this, with a for loop?使用 for 循环解决此问题的最佳方法是什么?
From your DataFrame, we can use a groupby
on the column date
and the method cumcount
to get the expected result:从您的 DataFrame 中,我们可以在列date
和方法cumcount
上使用groupby
来获得预期的结果:
data['count'] = data.groupby(['date']).cumcount()+1
Output: Output:
date power heart rate count
0 2022-08-05 140 120 1
1 2022-08-05 160 155 2
2 2022-08-06 230 156 1
3 2022-08-06 230 155 2
4 2022-08-06 230 160 3
5 2022-08-06 140 130 4
6 2022-08-07 140 131 1
7 2022-08-07 230 170 2
data['count'] = data.groupby['date'].cumcount()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.