我有一个数据框-df-,我要对其应用一系列条件(掩码)并将值分配给新列。
df["CLUSTER"] = 0
s = ((df["gender"]=="M") & (df["age"]>=35) & (df["age"]<=54) & (df["category"]=="A"))
t = ((df["age"]>=18) & (df["age"]<=44) & (df["category"]=="B"))
p = ((df["age"]>=35) & (df["age"]<=54) & (df["category"]=="C"))
pct = ((df["gender"]=="F") & (df["age"]>=18) & (df["age"]<=35) & df["category"]=="A"))
ex = ((df["age"]>55))
s_a = ((df["CLUSTER"]==0)&(df["age"]>=18) & (df["age"]<=54) & (df["category"]=="A")))
s_b = ((df["CLUSTER"]==0)&(df["age"]>=18) & (df["age"]<=54) & (df["category"]=="B")))
s_c = (df["CLUSTER"]==0)&(df["age"]>=18) & (df["age"]<=54) & (df["category"]=="C")))
df.loc[s,"CLUSTER"] = "S"
df.loc[t,"CLUSTER"] = "T"
df.loc[p,"CLUSTER"] = "P"
df.loc[pct,"CLUSTER"] = "PCT"
df.loc[ex,"CLUSTER"] = "EX"
运行上面的单元格时,我会得到
df.CLUSTER.value_counts()
0 1121508
PCT 298609
EX 257393
T 151985
S 58466
P 43740
最后,明确要求CLUSTER为0 的最后三个条件返回
df.loc[s_a,"CLUSTER"] = "S A"
df.loc[s_b,"CLUSTER"] = "S B"
df.loc[s_c,"CLUSTER"] = "S C"
df.CLUSTER.value_counts()
S A 704303
0 683451
E 257393
S B 174976
S C 111578
我相信这实际上与掩码与索引值一起使用有关,但是我该如何解决呢?
感谢阅读