Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3.x 基于上一行将列值增加1_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 基于上一行将列值增加1

Python 3.x 基于上一行将列值增加1,python-3.x,pandas,Python 3.x,Pandas,我有一个熊猫数据框,如下所示: data=[['A',1,30], ['A',1,2], ['A',0,4], ['A',1,4], ['B',0,5], ['B',1,1], ['B',0,5], ['B',1,8]] df = pd.DataFrame(data,columns=['group','var_1','var_2']) 我想根据以下条件创建一系列具有索引的值: 步骤1)增量应始终从每组“var

我有一个熊猫数据框,如下所示:

data=[['A',1,30],
      ['A',1,2],
      ['A',0,4],
      ['A',1,4],
      ['B',0,5],
      ['B',1,1],
      ['B',0,5],
      ['B',1,8]]

df = pd.DataFrame(data,columns=['group','var_1','var_2'])
我想根据以下条件创建一系列具有索引的值:

步骤1)增量应始终从每组“var_2”的第一行开始。例如:对于A组,增量应从30开始,对于B组,增量应从5开始

步骤2)递增值,其中“var_1”=1

我的期望输出:

0    30
1    31
3    32
5    6
7    7
groupby一起使用
和一些计算技巧

df['cumsum']=df.groupby(['group'])['var_1'].cumsum()
df_first=df.groupby(['group']).agg({'var_1':'first','var_2':'first'}).reset_index().rename(列={'var_1':'first_var_1','var_2':'first_var_2'})
df=df.merge(df_first,on='group')
df['res']=df['first_var_2']+df['cumsum']-df['first_var_1']
res=df[df['var_1']==1]['res']
0    30
1    31
3    32
5     6
7     7
名称:res,数据类型:int64
df_first
获取每组
var_1
var_2
上的第一个值。如果
var_1
的第一行为1,则需要
var_1
的第一个值来抵消
cumsum