我有以下数据框:
我想按 id 分组并添加一个包含 Y 的标志列,如果任何时候 Y 出现在 id 上,则生成的 DF 将如下所示:
这是我的方法,太耗时且不确定正确性:
temp=pd.DataFrame()
j='flag'
for i in df['id'].unique():
test=df[df['id']==i]
test[j]=np.where(np.any((test[j]=='Y')),'Y',test[j])
temp=temp.append(test)
最佳答案
您可以执行groupby + max
,因为Y > N
:
df.groupby('id', as_index=False)['flag'].max()
id flag
0 1 Y
1 2 Y
2 3 N
3 4 N
4 5 Y
关于python - 自定义 groupby 函数 pandas python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72116380/