2012-10-05 34 views
23

मैं एक df में किसी भी स्तंभ पर .map(func) उपयोग कर सकते हैं, जैसे करने के लिए समारोह लागू होते हैं:पांडा DataFrame: सभी स्तंभों

df=DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]}) 

df['a']=df['a'].map(lambda x: x > 1) 

मैं भी किए जा सकेंगे:

df['a'],df['b']=df['a'].map(lambda x: x > 1),df['b'].map(lambda x: x > 1) 

वहाँ लागू करने के लिए एक और अधिक pythonic तरीका है सभी कॉलम या पूरे फ्रेम (एक लूप के बिना) के लिए एक समारोह?

+0

अपने '' लैम्ब्डा को lambda' एक्स को आसान बनाने: x> 1' – Blender

+0

@ ब्लेंडर - धन्यवाद, संपादित ... – root

+0

बस उस ओर इशारा करते हुए। आपको मूल प्रश्न को संपादित करने की ज़रूरत नहीं है। – Blender

उत्तर

35

यदि मैं आपको सही समझता हूं, तो आप applymap विधि की तलाश में हैं।

>>> print df 
    A B C 
0 -1 0 0 
1 -4 3 -1 
2 -1 0 2 
3 0 3 2 
4 1 -1 0 
>>> print df.applymap(lambda x: x>1) 
     A  B  C 
0 False False False 
1 False True False 
2 False False True 
3 False True True 
4 False False False 
+0

@ ब्रेनबर्न - हाँ, यह वही है जो मैं ढूंढ रहा था। इसे दस्तावेज़ों से नहीं देखा। धन्यवाद। – root

1

0.20.0 के बाद से, आप उपयोग कर सकते transform

In [578]: df.transform(lambda x: x > 1) 
Out[578]: 
     A  B  C 
0 False False False 
1 False True False 
2 False False True 
3 False True True 
4 False False False 

In [579]: df 
Out[579]: 
    A B C 
0 -1 0 0 
1 -4 3 -1 
2 -1 0 2 
3 0 3 2 
4 1 -1 0 

और, इस साधारण मामले के लिए, क्यों नहीं बस df > 1 का उपयोग करें?

In [582]: df > 1 
Out[582]: 
     A  B  C 
0 False False False 
1 False True False 
2 False False True 
3 False True True 
4 False False False 
संबंधित मुद्दे