/ / pandas - python、pandas、indexing、condition、multiple-columnsで異なるタイプのelifでデータフレーム列を作成する

pandas - python、pandas、indexing、condition、multiple-columnsで異なるタイプのelifを持つデータフレーム列を作成する

これは、 質問.

データフレーム列、擬似コードの例を作成するためにif / elif / elseロジックをいくつか実行したいと思います。

if Col1 = "A" and Col2 = 1 then Col3 = "A1"
else if Col1 = "A" and Col2 = 0 then Col3 = "A0"
else Col3 = "XX"

そこにタイプを混ぜてもいいですか?私はこのエラーが発生しています:

TypeError:dtyped [int64]配列と[bool]型のスカラーを比較できません

回答:

回答№1は2

私はあなたが使用できると思う:

df["Col3"] = "XX"
df.loc[(df.Col1 == "A") & (df.Col2 == 1), "Col3"] = "A1"
df.loc[(df.Col1 == "A") & (df.Col2 == 0), "Col3"] = "A0"

ダブル numpy.where

df["Col3"] = np.where((df.Col1 == "A") & (df.Col2 == 1) , "A1",
np.where((df.Col1 == "A") & (df.Col2 == 0), "A0", "XX"))

サンプル:

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