如何用分组数据的最大值填充列 groupby 的行值

how do you fill row values of a column groupby with the max value of the grouped data

我正在尝试用分组数据的最大值填充分组数据中列的值。

以下是数据样本

    
df1 = [[52, '1', '0'], [52, '1', '1'],
       [52, '1', '0'], [52, '2', '0'],
       [53, '2', '0'], [52, '2', '0']]
    
df = pd.DataFrame(df1, columns =['Cow','Lact', 'fail'])

Producing the following dataframe

  Cow Lact fail
0   52  1   0
1   52  1   1
2   52  1   0
3   52  2   0
4   53  2   0
5   52  2   0

在这个例子中,我想将 0 值替换为 1(最大值),因为 cow = 52 lact = 1


  Cow Lact fail
0   52  1   1
1   52  1   1
2   52  1   1
3   52  2   0
4   53  2   0
5   52  2   0

我修改

中出现的代码失败
grouped = df.groupby(["Cow", "Lact"], as_index=False).max()['fail']
for i in grouped:
    if i == 1:
        df['fail'] =  1

对我的方法失败的解决方案和澄清表示赞赏。 谢谢

你快到了,直接用transform('max'):

df['fail'] = df.groupby(["Cow", "Lact"])['fail'].transform('max')

输出:

   Cow Lact fail
0   52    1    1
1   52    1    1
2   52    1    1
3   52    2    0
4   53    2    0
5   52    2    0

您可以将分组依据与变换“max”结合使用。我不确定您是想简单地替换 'fail' 列还是想创建一个新列,但这应该能得到预期的结果。

df['fail'] = df.groupby(['Cow', 'Lact'])['fail'].transform(max)