2016-04-25 53 views
0

我想將三個虛擬變量合併爲一個。例如:創建一個虛擬變量結合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,我感謝您的幫助。最佳

+0

'x1','x2'和'x3'的類型是什麼? – vaultah

+0

他們都是numpy.int64。 – worthy

回答

0

比方說,你定義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] 
+0

感謝您的回覆。 – worthy

0

我不太清楚你的數據幀的新變量被部分的意思。

我想創造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。