0
大家早上好。
我有以下数据:
import pandas as pd
info = {
'states': [-1, -1, -1, 1, 1, -1, 0, 1, 1, 1],
'values': [34, 29, 28, 30, 35, 33, 33, 36, 40, 41] }
df = pd.DataFrame(data=info)
print(df)
>>>
states values
0 -1 34
1 -1 29
2 -1 28
3 1 30
4 1 35
5 -1 33
6 0 33
7 1 36
8 1 40
9 1 41
我需要使用PANDAS**(和/或高阶函数)对数据**进行分组(* 已经使用for循环做过练习 *),我需要以“状态”列为指南对数据进行分组。但分组不应包括所有数据,我只需要对相邻的数据进行分组......如下所示:
初始数据框:
states values
0 -1 34 ┐
1 -1 29 │ Group this part (states = -1)
2 -1 28 ┘
3 1 30 ┐ Group this part (states = 1)
4 1 35 ┘
5 -1 33 'Group' this part (states = -1)
6 0 33 'Group' this part (states = 0)
7 1 36 ┐
8 1 40 │ Group this part (states = 1)
9 1 41 ┘
它将生成一个DataFrame,其中包含按段分组的内容(来自“states”列),另一列包含数据的总和(来自“values”列)。
预期 Dataframe :
states values
0 -1 91 (values=34+29+28)
1 1 65 (values=30+35)
2 -1 33
3 0 33
4 1 117 (values=36+40+41)
你们谁比较精通这些问题,也许你们可以帮我做这个手术。
"太感谢你了"
1条答案
按热度按时间mcdcgff01#
使用
diff
和cumsum
标识数据块/行组,然后按这些数据块对 Dataframe 进行分组,并聚合states
与first
以及values
与sum
结果