the seleccionar name filtrar datos columns columnas column change python pandas dataframe

python - seleccionar - rename columns pandas



Cómo verificar si existe una columna en Pandas (3)

Esto funcionará:

if ''A'' in df:

Pero para mayor claridad, probablemente lo escribiría como:

if ''A'' in df.columns:

¿Hay alguna forma de comprobar si existe una columna en un marco de datos de Pandas?

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 df[''sum''] = df[''B''] + df[''C''] lugar.

Gracias por la ayuda.


Para verificar si una o más columnas existen todas, puede usar set.issubset , como en:

if set([''A'',''C'']).issubset(df.columns): df[''sum''] = df[''A''] + df[''C'']

Como @brianpck señala en un comentario, set([]) puede construirse alternativamente con llaves:

if {''A'', ''C''}.issubset(df.columns):

Vea esta pregunta para una discusión sobre la sintaxis de llaves.

O bien, puede usar una lista de comprensión, como en:

if all([item in df.columns for item in [''A'',''C'']]):


Solo para sugerir otra forma sin usar sentencias if, puede usar el método get() para DataFrame . Para realizar la suma según la pregunta:

df[''sum''] = df.get(''A'', df[''B'']) + df[''C'']

El método de obtención de DataFrame tiene un comportamiento similar al de los diccionarios de Python.