Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.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 使用.where()替换.groupby()对象中的_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python 使用.where()替换.groupby()对象中的

Python 使用.where()替换.groupby()对象中的,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,考虑一个包含多组整数的数据帧: d=pd.DataFrame({'label':['a','a','a','a','b','b','b','b'],'value':[1,2,3,2,7,1,8,9]}) D 标签值 0 a 1 1 a 2 2 a 3 3 a 2 4 b 7 5 b 1 6 b 8 7 b 9 对于这些整数组中的每一个,每个整数都必须大于或等于前一个整数。如果不是这种情况,则采用上一个整数的值。我用 s.where(~(s

考虑一个包含多组整数的数据帧:

d=pd.DataFrame({'label':['a','a','a','a','b','b','b','b'],'value':[1,2,3,2,7,1,8,9]})
D
标签值
0 a 1
1 a 2
2 a 3
3 a 2
4 b 7
5 b 1
6 b 8
7 b 9
对于这些整数组中的每一个,每个整数都必须大于或等于前一个整数。如果不是这种情况,则采用上一个整数的值。我用

s.where(~(s

对于单个系列来说效果很好。我甚至可以对数据帧进行分组,并循环遍历每个提取的序列:

grouped=s.groupby('label')['value']
对于分组中的uS:
打印(其中(~(s
但是,现在如何将这些值恢复到原始数据帧中

或者,有没有更好的方法?我不喜欢使用<代码> .GROPBB< <代码>,也不认为for循环是一个很好的解决方案…

< P> IIUC,你可以在<代码> GROPBB< <代码>中使用如下:

d['val_max'] = d.groupby('label')['value'].cummax()
print (d)
  label  value  val_max
0     a      1        1
1     a      2        2
2     a      3        3
3     a      2        3
4     b      7        7
5     b      1        7
6     b      8        8
7     b      9        9

如果第二组是7,1,2,8,9,你的输出会是7,7,7,8,9吗?好问题,预期输出会是
7,7,7,8,9
。我应该早点问的,为此我伤了脑筋
cummax
就是我要找的@jorijnsmit有时为一个问题伤脑筋是件好事,你不会很快忘记解决方法;)
d['val_max'] = d.groupby('label')['value'].cummax()
print (d)
  label  value  val_max
0     a      1        1
1     a      2        2
2     a      3        3
3     a      2        3
4     b      7        7
5     b      1        7
6     b      8        8
7     b      9        9