Pandas: Dataframe itertuples boolean series groupby optimiza



我是python新手。我有数据帧(DF)的例子:

<表类> id 类型 tbody><<tr>11B2C2B

通过使用Pandas内置函数替换生成布尔级数的第一步,将缓慢迭代编码的代码更改为快速矢量化编码,例如

df['type'].eq('A')

然后,您可以将它附加到第二步的groupby语句,如下所示:

df['A_flag'] = df['type'].eq('A').groupby(df['id']).transform('max').astype(int)

结果

print(df)

id type  A_flag
0   1    A       1
1   1    B       1
2   2    C       0
3   2    B       0

一般来说,如果你有更复杂的条件,你也可以用矢量化的方式来定义它,例如。定义布尔级数m:

m = df['type'].eq('A') & df['type1'].gt(1)  | (df['type2'] != 0)

然后,在步骤2中使用如下:

m.groupby(df['id']).transform('max').astype(int)