我是python新手。我有数据帧(DF)的例子:
<表类>
id
类型
tbody><<tr>1 1B 2C 2B 表类>
通过使用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)