gpt4 book ai didi

python - cumsum 重置为 NaN_2

转载 作者:行者123 更新时间:2023-12-03 23:05:42 24 4
gpt4 key购买 nike

我有一个数据帧,它是通过连接几个包含各种信息位的数据帧来制作的。然后我在数据框中创建新列,并使用对数据列的操作结果。
其中一列 ['MSD'] 在促成连接的每个数据帧之间的连接处包含一个 NaN。
我想新建一个专栏MSD_cum其中每个值是 MSD 的累积和
但我希望累积总和从每个 NaN 重新开始。
已经有一个关于此的问题,但是尽管给出的答案中的代码没有错误地执行,但它们实际上都没有做我想要的
IE。

MSD 
1
2
3
4
NaN
1
2
3
将创建输出
MSD_cum
1
3
6
10
NaN
1
3
6
相反,它们产生与输入相同或
我自己的初始尝试也失败并产生与输入相同的输出,尝试使用 if 语句使 cumsum 以数据索引之间的差异为条件。
if  np.diff(data_230['time']) is 1:
data_230['MSD_cum'] = cumsum(data_230['MSD'])
else:
data_230['MSD_cum'] = data_230['MSD']
在这一点上,我会对任何方法感到满意。

最佳答案

使用 Series.isna Series.cumsum 创建分组系列 s ,这将需要对列 MSD 进行分组以便我们可以计算cumsum每次出现 NaN 时都会重置在 MSD , 下次使用 Series.groupby 对列进行分组 MSDs连同 cumsum :

s = df['MSD'].isna().cumsum()
df['MSD_cum'] = df['MSD'].groupby(s).cumsum()
详情:
# print(s)   
0 0
1 0
2 0
3 0
4 1
5 1
6 1
7 1
Name: MSD, dtype: int64

# print(df)
MSD MSD_cum
0 1.0 1.0
1 2.0 3.0
2 3.0 6.0
3 4.0 10.0
4 NaN NaN
5 1.0 1.0
6 2.0 3.0
7 3.0 6.0

关于python - cumsum 重置为 NaN_2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62878723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com