熊猫面具返回错误的值

时间:2019-12-19 16:34:26

标签: python pandas dataframe filtering mask

我有一个数据框-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

我相信这实际上与掩码与索引值一起使用有关,但是我该如何解决呢?

感谢阅读

0 个答案:

没有答案