¿Hay alguna manera de verificar si existe una columna en un Pandas DataFrame?
Supongamos que tengo el siguiente DataFrame:
>>> import pandas as pd
>>> from random import randint
>>> df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
'B': [randint(1, 9)*10 for x in xrange(10)],
'C': [randint(1, 9)*100 for x in xrange(10)]})
>>> df
A B C
0 3 40 100
1 6 30 200
2 7 70 800
3 3 50 200
4 7 50 400
5 4 10 400
6 3 70 500
7 8 30 200
8 3 40 800
9 6 60 200
y quiero calcular df['sum'] = df['A'] + df['C']
Pero primero quiero verificar si df['A']
existe, y si no, quiero calcular en su df['sum'] = df['B'] + df['C']
lugar.
if not 'A' in df.columns:
para ejecutar una operación siA
no está presente endf
Para verificar si existen una o más columnas, puede usar
set.issubset
, como en:Como @brianpck señala en un comentario,
set([])
alternativamente se puede construir con llaves,Vea esta pregunta para una discusión de la sintaxis de llaves.
O puede usar una lista de comprensión, como en:
fuente
{'A', 'B'}.issubset()
Solo para sugerir otra forma sin usar declaraciones if, puede usar el
get()
método paraDataFrame
s. Para realizar la suma basada en la pregunta:El
DataFrame
método get tiene un comportamiento similar al de los diccionarios python.fuente