循环python中的count函数



我想创建一个基于日期的计数函数。因此,它应该从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'])

使用for循环,最好的方法是什么?

从您的DataFrame,我们可以在列date上使用groupby和方法cumcount来获得预期结果:

data['count'] = data.groupby(['date']).cumcount()+1

输出:

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()

最新更新