pandas dataframe donde la cláusula con el punto frente a la selección de la columna corchetes

Tengo un DataFrame regular con una columna de tipo de cadena (objeto). Cuando trato de filtrar en la columna usando el equivalente de una cláusula WHERE, obtengo un KeyError cuando uso la notación de puntos. Cuando en notación de paréntesis, todo está bien.

Me refiero a estas instrucciones:

 df[df.colA == 'blah'] df[df['colA'] == 'blah'] 

El primero da el equivalente de

KeyError: Falso

No publico un ejemplo, ya que no puedo reproducir el problema en un DataFrame a medida creado con fines ilustrativos: cuando lo hago, ambas notaciones producen el mismo resultado.

Preguntando entonces si hay una diferencia entre los dos y por qué.

La notación de puntos es solo un atajo conveniente para acceder a las cosas frente a los corchetes estándar. En particular, no funcionan cuando el nombre de la columna es algo así como una sum que ya es un método DataFrame. Mi apuesta sería que el nombre de la columna en su ejemplo real se está ejecutando en ese problema, y ​​por lo tanto funciona bien con la selección del corchete, pero está probando si un método es igual a 'blah' .

Ejemplo rápido a continuación:

 In [67]: df = pd.DataFrame(np.arange(10).reshape(5,2), columns=["number", "sum"]) In [68]: df Out[68]: number sum 0 0 1 1 2 3 2 4 5 3 6 7 4 8 9 In [69]: df.number == 0 Out[69]: 0 True 1 False 2 False 3 False 4 False Name: number, dtype: bool In [70]: df.sum == 0 Out[70]: False In [71]: df['sum'] == 0 Out[71]: 0 False 1 False 2 False 3 False 4 False Name: sum, dtype: bool