2015-03-19 35 views
6

पॉप्युलेट करने के लिए उपयोग करें मैं इस तरह एक DataFrame है:पांडा: अगर-किसी और नया स्तंभ

col1  col2  
    1   0 
    0   1 
    0   0 
    0   0 
    3   3 
    2   0 
    0   4 

मैं एक स्तंभ है कि एक 1 है अगर col2> 0 या 0 अन्यथा है जोड़ना चाहते हैं। अगर मैं आर का उपयोग कर रहा था तो मैं कुछ ऐसा करूंगा जैसे

df1[,'col3'] <- ifelse(df1$col2 > 0, 1, 0) 

मैं इसे पाइथन/पांडा में कैसे करूं?

+0

कैसे एक स्तंभ जोड़ने के लिए, या कैसे करता है, तो किसी और हालत 0' वाक्य रचना 'वर = 1 का उपयोग करने के बारे में सवाल है? – TigerhawkT3

+0

@ टाइगरहॉक 3: दोनों – screechOwl

उत्तर

8

आप एक पूर्णांक श्रृंखला के लिए बूलियन श्रृंखला df.col2 > 0 परिवर्तित कर सकते हैं (True1 और False0 हो जाता हो जाता है):

df['col3'] = (df.col2 > 0).astype('int') 

(एक नया स्तंभ बनाने के लिए, आप बस इसे नाम और एक निर्दिष्ट करने के लिए की जरूरत है ।

col2 col3 
0  0  0 
1  1  1 
2  0  0 
3  0  0 
4  3  1 
5  0  0 
6  4  1 
: श्रृंखला, सरणी या अपने DataFrame रूप में एक ही लंबाई की सूची)

इस रूप में col3 का उत्पादन

कॉलम बनाने का एक और तरीका np.where का उपयोग करना हो सकता है, जो आपको किसी भी वास्तविक या गलत मानों के लिए मान निर्दिष्ट करने देता है और शायद R फ़ंक्शन ifelse के सिंटैक्स के करीब है। उदाहरण के लिए:

>>> np.where(df['col2'] > 0, 4, -1) 
array([-1, 4, -1, -1, 4, -1, 4]) 
1

मुझे लगता है कि आप पांडा का उपयोग कर रहे हैं ('डीएफ' नोटेशन के कारण)। यदि ऐसा है, तो आप col2 को शून्य के विरुद्ध तुलना करने के लिए .gt (से अधिक) का उपयोग कर col3 को एक बुलियन ध्वज असाइन कर सकते हैं। एक के परिणाम को गुणा करने से बूलियन झंडे को एक और शून्य में परिवर्तित कर दिया जाएगा।

df1 = pd.DataFrame({'col1': [1, 0, 0, 0, 3, 2, 0], 
        'col2': [0, 1, 0, 0, 3, 0, 4]}) 

df1['col3'] = df1.col2.gt(0) * 1 

>>> df1 
Out[70]: 
    col1 col2 col3 
0  1  0  0 
1  0  1  1 
2  0  0  0 
3  0  0  0 
4  3  3  1 
5  2  0  0 
6  0  4  1 

आप एक ही परिणाम प्राप्त करने के लिए लैम्ब्डा अभिव्यक्ति का भी उपयोग कर सकते हैं, लेकिन मेरा मानना ​​है कि उपरोक्त विधि आपके दिए गए उदाहरण के लिए आसान है।

df1['col3'] = df1['col2'].apply(lambda x: 1 if x > 0 else 0) 
संबंधित मुद्दे