在pandas

问题描述 投票:0回答:2

当有重复的门票时,我如何标准化每张门票具有相同的政策?例如:如果一周内的票“未遵守”,那么该票的政策都应相同,无论一周如何

输出样本

每周的票务政策用户 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"

。因此,
python pandas dataframe replace group-by
2个回答
1
投票
将“不遵守”以“不遵守”。

您要为每个票传播相同的策略,请使用

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
希望这有帮助...

0
投票

您可以进行一个组,然后进行转换,然后将其设置为“策略”列;

df['Policy'] = df.groupby(['Year-Week','Ticket']).Policy.transform(lambda x: 'NOT COMPLIED'if 'NOT COMPLIED' in x else 'COMPLIED')

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.