Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数在pandas中用于选择累加和_Python_Pandas_Dataframe_Cumsum_Accumulate - Fatal编程技术网

Python函数在pandas中用于选择累加和

Python函数在pandas中用于选择累加和,python,pandas,dataframe,cumsum,accumulate,Python,Pandas,Dataframe,Cumsum,Accumulate,我试图循环一个数据帧,并根据另一列中的值的变化在一列中累积一个值的总和 假设我有一个类似这样的数据帧,“累计值”是我要计算的列: 输入值 标准 累积值 3. 0 3. 5. 0 8. 2. 1. 2. 6. 1. 8. 4. 0 4. 使用shift和cumsum创建要分组的键。然后您可以对键进行分组,并对输入的_值求和 df['accumulated_value'] = df.assign(key=(df['criterion'] != df['criterion'].shift()).cum

我试图循环一个数据帧,并根据另一列中的值的变化在一列中累积一个值的总和

假设我有一个类似这样的数据帧,“累计值”是我要计算的列:

输入值 标准 累积值 3. 0 3. 5. 0 8. 2. 1. 2. 6. 1. 8. 4. 0 4.
使用shift和cumsum创建要分组的键。然后您可以对键进行分组,并对输入的_值求和

df['accumulated_value'] = df.assign(key=(df['criterion'] != df['criterion'].shift()).cumsum()).groupby('key')['input_value'].cumsum()

   input_value  criterion  accumulated_value
0            3          0                  3
1            5          0                  8
2            2          1                  2
3            6          1                  8
4            4          0                  4
请参考@HenryEcker的评论,并注意您不需要指定掩码的结果。而只是按掩码返回的序列分组

df.groupby((df['criterion'] != df['criterion'].shift()).cumsum())['input_value'].cumsum()

groupby
可以接受一系列
df.groupby((df['criteria']!=df['criteria'].shift()).cumsum())['input_value'].cumsum()
无需分配
临时密钥,对于较大的帧,临时密钥可能非常昂贵。(+1任意一种方式)=@HenryEcker你完全正确。这是我的疏忽。我会更新我的答案以反映你的建议。太棒了,谢谢,这很有魅力。感谢@HenryEcker的groupby()建议。实际上,我最终在这个sime中将分配的密钥用于不同的任务,但很高兴知道,对于更大的df,可以避免使用它。