当有重复的门票时,我如何标准化每张门票具有相同的政策?例如:如果一周内的票“未遵守”,那么该票的政策都应相同,无论一周如何
输出样本
每周的票务政策用户 2022-35 12502未遵守MX 2022-35 12502未遵守我们 2022-35 12502未遵守AL 2022-35 12502未遵守BR 2022-35 12471符合DE 2022-35 12409不遵守我们 2022-35 12409未遵守BR 2022-35 12406符合MX
我想要的是,我想要的是在有重复的门票时不遵守的统治地位。
利用了以下事实,即在ASCII表上"N"
"C"
您要为每个票传播相同的策略,请使用
max()
致电groupby().transform()
,以使结果与原始数据框相同,从而使您可以将结果直接分配回DataFrame.。
df['Policy'] = df.groupby('Ticket')['Policy'].transform('max')
Year-Week Ticket Policy User
0 2022-35 12502 NOT COMPLIED MX
1 2022-35 12502 NOT COMPLIED US
2 2022-35 12502 NOT COMPLIED AL
3 2022-35 12502 NOT COMPLIED BR
4 2022-35 12471 COMPLIED DE
5 2022-35 12409 NOT COMPLIED US
6 2022-35 12409 NOT COMPLIED BR
7 2022-35 12406 COMPLIED MX
步调这件代码;
df1 = df[['Year-Week', 'Ticket']].drop_duplicates()
policy = []
for time,ticket in zip(df1['Year-Week'],df1['Ticket']):
df_temp = df[(df["Year-Week"] == time) & (df["Ticket"] == ticket)]
if "NOT COMPLIED" in df_temp["Policy"].to_list():
policy.extend(["NOT COMPLIED"] * df_temp.shape[0])
else:
policy.extend(["COMPLIED"] * df_temp.shape[0])
df["Policy"] = policy
希望这有帮助...
您可以进行一个组,然后进行转换,然后将其设置为“策略”列;
df['Policy'] = df.groupby(['Year-Week','Ticket']).Policy.transform(lambda x: 'NOT COMPLIED'if 'NOT COMPLIED' in x else 'COMPLIED')