如何从数据帧组的第一个值创建增量var?

flying_fluid_four

我有一个datframe为:

data=[[0,1,5],
      [0,1,6],
      [0,0,8],
      [0,0,10],
      [0,1,12],
      [0,0,14],
      [0,1,16],
      [0,1,18],    
      [1,0,2],
      [1,1,0],
      [1,0,1],
      [1,0,2]]

df = pd.DataFrame(data,columns=['KEY','COND','VAL'])

对于RES1,我想创建一个计数器变量RES,其中COND == 1。组中第一个KEY的RES值与VAL相同(我可以以某种方式使用cumcount())。

对于RES2,我只想将缺少的值填充为先前的值。(df.fillna(method='ffill')), 我在想..

    KEY  COND    VAL RES1  RES2
0     0     1    5      5     5
1     0     1    6      6     6
2     0     0    8            6
3     0     0   10            6
4     0     1   12      7     7
5     0     0   14            7
6     0     1   16      8     8
7     0     1   18      9     9
8     1     0    2      2     2
9     1     1    0      3     3
10    1     0    1            3
11    1     0    2            3

目的是寻找一种矢量化的解决方案,该解决方案在百万行以上是最佳的。

贝尼

达蒙

con=(df.COND==1)|(df.index.isin(df.drop_duplicates('KEY').index))
df['res1']=df.groupby('KEY').VAL.transform('first')+
           df.groupby('KEY').COND.cumsum()[con]-
           df.groupby('KEY').COND.transform('first')
df['res2']=df.res1.ffill()
df
   Out[148]: 
    KEY  COND  VAL  res1  res2
0     0     1    5   5.0   5.0
1     0     1    6   6.0   6.0
2     0     0    8   NaN   6.0
3     0     0   10   NaN   6.0
4     0     1   12   7.0   7.0
5     0     0   14   NaN   7.0
6     0     1   16   8.0   8.0
7     0     1   18   9.0   9.0
8     1     0    2   2.0   2.0
9     1     1    0   3.0   3.0
10    1     0    1   NaN   3.0
11    1     0    2   NaN   3.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何仅替换数据帧熊猫中最大值的第一个实例?

标记R数据帧中的第一个按组

自动增量触发中的第一个值

如何删除零值,直到R数据帧中出现第一个非零值?

如何使用r中“下一个”组的第一个值?

R:如何将数据帧值缩短为第一个字符

如果第一个数据帧中存在行,如何更新第二个数据帧的存在值

按组的第一个值分组值

删除重复数据帧保留第一个或不为空值

使用2组不同的数据创建存储过程(将第一个数据中的值用作第二个数据的参数)

在第一个数据帧的某些列上执行数学函数时,如何从现有数据帧的第n行创建一个新的数据帧

如何基于组的第一个值联接两个表

Python熊猫:获取组的第一个值

捕获RegEx组的第一个值

如何使行与组的第一个值(str)保持一致?

如何按部分字符串(或第一个单词)排序数据帧

如何根据第二个中的可能值范围合并两个数据帧,但保留第一个中的值?

根据数据帧R上成功第一个值的条件替换第二个值

将一个熊猫数据帧合并到另一个熊猫数据帧,并从第二个数据帧中删除第一个数据帧中存在的值

如何找到每个组的第一个局部最大值?

如何按组用第一个非缺失值填充缺失?

如何选择组中的第一个值-不进行过滤?

在数据帧的行中,找到第一个出现的值和最长的值序列

如何在大熊猫中的组中创建最后值和第一个值之间存在差异的列

SSRS如何获取矩阵行组的第一个和最后一个值?

创建第一个数据管道

SSRS图表组系列-如何使第二系列组从第一个数据点开始?

数据属性仅返回第一个值

dplyr:将组中的所有值除以组的第一个值