/ / Criar trama de dados de coluna com elif de diferentes tipos em pandas - pitão, pandas, indexação, condição,-várias colunas

Criar coluna dataframe com elif de diferentes tipos em pandas - python, pandas, indexação, condição, múltiplas colunas

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 № 1

Eu 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