python - with - seleccionar columnas de un dataframe pandas
Pandas DataFrame: aplica funciĆ³n a todas las columnas (2)
Puedo usar .map(func)
en cualquier columna en un df, como:
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)
Yo también podría:
df[''a''],df[''b'']=df[''a''].map(lambda x: x > 1),df[''b''].map(lambda x: x > 1)
¿Hay una forma más pitónica de aplicar una función a todas las columnas o al cuadro completo (sin un bucle)?
A partir de 0.20.0
adelante, puede usar la 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
Y, para este caso simplista, ¿por qué no simplemente usar 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
Si entiendo bien, estás buscando el método de 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