英文:
How can I group this data and make this calculations and drops?
问题
我有这些数据:
0 1.514333e+12
1 1.514419e+12
2 1.514506e+12
3 1.514592e+12
4 1.514678e+12
...
1881 1.676851e+12
1882 1.676938e+12
1883 1.677024e+12
1884 1.677110e+12
1885 1.677146e+12
Name: volume1d, Length: 1886, dtype: float64
这些数据按时间段排列,因此我需要将这些数据每4行分组(每4个小时,每行代表一个小时)。例如:
a b
1 2
1 3
1 4
1 4
2 3
2 4
2 5
2 4
3 4
之后,我需要将这些分组相加,得到:
a b c
1 2 2
1 3 5
1 4 9
1 4 13
2 3 3
2 4 7
2 5 12
2 4 16
3 4 4
最后,只保留每个分组的最后一行:
a b c
1 4 13
2 4 16
3 4 4
如何能完成这个任务?(我只需要最后一张表格,如果您找到其他方法来完成这个任务,那就更好了)
编辑:如果最后一组只包含1、2或3行,我希望将这些行相加。
英文:
I have this data:
0 1.514333e+12
1 1.514419e+12
2 1.514506e+12
3 1.514592e+12
4 1.514678e+12
...
1881 1.676851e+12
1882 1.676938e+12
1883 1.677024e+12
1884 1.677110e+12
1885 1.677146e+12
Name: volume1d, Length: 1886, dtype: float64
The data is in timeperiods, so, I need to group this data every 4 rows (every 4 hours (each row is an hour)).
for example:
a b
1 2
1 3
1 4
1 4
2 3
2 4
2 5
2 4
3 4
after this, I would have to add the groups.
a b c
1 2 2
1 3 5
1 4 9
1 4 13
2 3 3
2 4 7
2 5 12
2 4 16
3 4 4
to finish leaving just the las row of the groups:
a b c
1 4 13
2 4 16
3 4 4
How can I all do this?
(what I need is the last table, so if you find another way to do this, perfect)
Edited: if the last group is only contains 1,2 or 3 rows, I would like it to have those rows added.
答案1
得分: 0
您可以使用累积求和(cumsum
函数)来转换记录,并最终提取每个组的最后一条记录:
df.assign(c=df.groupby('a').transform('cumsum')).groupby('a').last().reset_index()
这段代码将会对数据进行相应的操作。如果您需要进一步了解代码中的函数和方法,请查看这里。
英文:
You can transform records using cumulative sum (cumsum
function) and eventually extract the last record from each group:
df.assign(c=df.groupby('a').transform('cumsum')).groupby('a').last().reset_index()
a b c
0 1 4 13
1 2 4 16
2 3 4 4
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论