Python 通过在数据帧中运行最大值替换值

Python 通过在数据帧中运行最大值替换值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧的格式 id time a b 01 01 1 0 01 02 0 1 01 03 0 0 02 01 0 0 02 02 1 0 02 03 1 1 02 04 0 0 所以现在,输出应该是 id time a b 01 01 1 0 01 02 1 1 01 03 1 1 02 01 0 0 02 02 1 0 02 03 1 1 02

我有一个数据帧的格式

id  time  a  b
01    01  1  0
01    02  0  1
01    03  0  0
02    01  0  0
02    02  1  0
02    03  1  1
02    04  0  0
所以现在,输出应该是

id  time  a  b
01    01  1  0
01    02  1  1
01    03  1  1
02    01  0  0
02    02  1  0
02    03  1  1
02    04  1  1

这里,我按
id
进行分组,对于每个
id
,df按
时间进行排序。现在,我想用迄今为止看到的最大值替换
a
b
中的值。我想我可以对每组应用滚动最大值,但有没有更好的方法来实现这一点?

有点像累积最大值?:)


您必须为每个组调用它,但它胜过for循环,您也必须为每个组调用它。

列a和b可以用其累积最大值替换,如acdr建议的那样

这是一行:

df[["a","b"]] = df.groupby("id").cummax()[["a","b"]]
输出:

    id time a   b
0   1   1   1   0
1   1   2   1   1
2   1   3   1   1
3   2   1   0   0
4   2   2   1   0
5   2   3   1   1
6   2   4   1   1

我确实执行了
df['a']=df.groupby('id')['a'].apply(pd.cummax)
,但这给出了一个错误
AttributeError:'module'对象没有属性“cummax”
。不太清楚如何使用cummax!谢谢:)这些答案有帮助吗?