1

所以,我有一个这样的数据框:

在此处输入图像描述

我想根据Field1进行分组,如果count大于2,则找到max Field2并创建一个新字段并将其设置为True。

在此处输入图像描述

我试过

import pandas as pd 
pd.read_csv("c:/test.csv")
df["Field3"] = df.groupby(["Field1"])["Field2"].transform("max") 

但它没有用。

4

1 回答 1

2

我们必须做一个额外的检查每个大于transform的计数Field12

g = df.groupby("Field1")["Field2"]
df['Field3'] = g.transform('count').gt(2) & df['Field2'].eq(g.transform('max'))

或者,您也可以使用单个transform带有 lambda 函数来检查条件,但这可能比较大数据帧上的第一种方法要慢

df['Field3'] = df.groupby("Field1")["Field2"].transform(
                         lambda s: (s == max(s)) * (len(s) > 2))

  Field1  Field2  Field3
0      a       3   False
1      a       5    True
2      a       3   False
3      b       2   False
4      c       1   False
5      b       6   False
于 2021-09-26T11:37:23.137 回答