所以,我有一个这样的数据框:
我想根据Field1进行分组,如果count大于2,则找到max Field2并创建一个新字段并将其设置为True。
我试过
import pandas as pd
pd.read_csv("c:/test.csv")
df["Field3"] = df.groupby(["Field1"])["Field2"].transform("max")
但它没有用。
我们必须做一个额外的检查每个大于transform
的计数Field1
2
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