我想將三個虛擬變量合併爲一個。例如:創建一個虛擬變量結合python中的其他假人
X1:1 0 0 0 1
X2:0 0 0 0 1
X3:1 1 0 0 0
我想創建: X4:1 0 0 1(如果三個虛擬變量中的任何一個都爲1,則取1,如果全部爲零,則取0)
注意:它們是數據框中的變量。所以新變量也將成爲該數據框的一部分。
我是新的python,我感謝您的幫助。最佳
我想將三個虛擬變量合併爲一個。例如:創建一個虛擬變量結合python中的其他假人
X1:1 0 0 0 1
X2:0 0 0 0 1
X3:1 1 0 0 0
我想創建: X4:1 0 0 1(如果三個虛擬變量中的任何一個都爲1,則取1,如果全部爲零,則取0)
注意:它們是數據框中的變量。所以新變量也將成爲該數據框的一部分。
我是新的python,我感謝您的幫助。最佳
比方說,你定義x
爲一個網格:
x = [
[1, 0, 0, 0, 1],
[0, 0, 0, 0, 1],
[1, 1, 0, 0, 0]
]
對於每一行,我們可以使用any()
,看是否有該行中的項目之一。然後,我們可以把結果(一個布爾值)到一個整數與int()
:
result = [int(any(row)) for row in x]
感謝您的回覆。 – worthy
我不太清楚你的數據幀的新變量被部分的意思。
我想創造X4最字面的方法是使用一個位或運算符列表中的理解:
>>> x1=[1, 0, 0, 0, 1]
>>> x2=[0, 0, 0, 0, 1]
>>> x3=[1, 1, 0, 0, 0]
>>> x4=[x1[i]|x2[i]|x3[i] for i in range(len(x1))]
>>> x4
[1, 1, 0, 0, 1]
列表理解(見https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)建立一個新的列表,同時遍歷第一,第二等x1-x3的值。按位或運算符(|)(見https://wiki.python.org/moin/BitwiseOperators)每次評估爲1(如果3個值中的任何一個爲1),否則爲0。
'x1','x2'和'x3'的類型是什麼? – vaultah
他們都是numpy.int64。 – worthy