Esta é uma extensão de questão.
I "d como fazer alguma if / elif / else lógica para criar uma coluna trama de dados, exemplo pseudocódigo:
if Col1 = "A" and Col2 = 1 then Col3 = "A1"
else if Col1 = "A" and Col2 = 0 then Col3 = "A0"
else Col3 = "XX"
está tudo bem misturar os tipos lá? Estou recebendo este erro:
TypeError: não é possível comparar uma matriz [int64] dtyped com uma escala do tipo [bool]
Respostas:
2 para resposta № 1Eu acho que você pode usar:
df["Col3"] = "XX"
df.loc[(df.Col1 == "A") & (df.Col2 == 1), "Col3"] = "A1"
df.loc[(df.Col1 == "A") & (df.Col2 == 0), "Col3"] = "A0"
Com duplo numpy.where
:
df["Col3"] = np.where((df.Col1 == "A") & (df.Col2 == 1) , "A1",
np.where((df.Col1 == "A") & (df.Col2 == 0), "A0", "XX"))
Amostra:
df = pd.DataFrame({"Col1":["A","B","A","B"],
"Col2":[1,1,0,0]})
print (df)
Col1 Col2
0 A 1
1 B 1
2 A 0
3 B 0
df["Col3"] = "XX"
df.loc[(df.Col1 == "A") & (df.Col2 == 1), "Col3"] = "A1"
df.loc[(df.Col1 == "A") & (df.Col2 == 0), "Col3"] = "A0"
df["Col4"] = np.where((df.Col1 == "A") & (df.Col2 == 1) , "A1",
np.where((df.Col1 == "A") & (df.Col2 == 0), "A0", "XX"))
print (df)
Col1 Col2 Col3 Col4
0 A 1 A1 A1
1 B 1 XX XX
2 A 0 A0 A0
3 B 0 XX XX