2012-10-05 19 views
23

tüm sütunlara fonksiyonu geçerlidir:Pandalar DataFrame: Ben gibi bir df herhangi sütun üzerinde <code>.map(func)</code> kullanabilirsiniz

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) 

Ben de olabilir:

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

uygulamak için daha pythonic yolu var mı tüm sütunlara veya tüm çerçeveye (döngü olmadan) bir işlev mi?

+0

lambda 'için' lambda' x basitleştirmek: x> 1' – Blender

+0

@ Blender - teşekkürler, düzenlenen ... – root

+0

Sadece bu işaret. Orijinal soruyu gerçekten düzenlemeniz gerekmez. – Blender

cevap

35

Seni doğru anlıyorsam, applymap yöntemini arıyorsun.

itibaren 0.20.0 itibaren
>>> 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

@ BrenBarn - evet, tam olarak aradığım şey bu. dokümanlardan fark etmedi. Teşekkürler. – root

1

, bu basit bir durum için, 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 

kullanmak Ve, neden sadece df > 1 kullanılır?

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 
İlgili konular