Estoy tratando de quitar una fila de mi marco de datos en la que una de las columnas tiene un valor de null. La mayor parte de la ayuda que puede encontrar se refiere a la eliminación de los valores NaN que no ha funcionado para mí hasta ahora.

Aquí he creado el marco de datos:

  # successfully crated data frame
 df1 = ut.get_data(symbols, dates) # column heads are 'SPY', 'BBD'

# can't get rid of row containing null val in column BBD
# tried each of these with the others commented out but always had an 
# error or sometimes I was able to get a new column of boolean values
# but i just want to drop the row
df1 = pd.notnull(df1['BBD']) # drops rows with null val, not working
df1 = df1.drop(2010-05-04, axis=0)
df1 = df1[df1.'BBD' != null]
df1 = df1.dropna(subset=['BBD'])
df1 = pd.notnull(df1.BBD)


# I know the date to drop but still wasn't able to drop the row
df1.drop([2015-10-30])
df1.drop(['2015-10-30'])
df1.drop([2015-10-30], axis=0)
df1.drop(['2015-10-30'], axis=0)


with pd.option_context('display.max_row', None):
    print(df1)

Aquí está mi resultado:

Eliminar fila con valor nulo de pandas marco de datos

Por favor alguien puede decirme cómo puedo soltar esta fila, preferentemente, tanto por la identificación de la fila por el valor null y cómo pasar por fecha?

No he estado trabajando con los pandas muy largo y se me ha atascado en esto durante una hora. Cualquier consejo sería muy apreciada.

InformationsquelleAutor ryan pickles | 2017-06-14

4 Comentarios

  1. 18

    Esto debe hacer el trabajo:

    df = df.dropna(how='any',axis=0) 

    Borrará todos los fila (eje=0) que ha «cualquier» valor Null en ella.

    EJEMPLO:

    #Recreate random DataFrame with Nan values
    df = pd.DataFrame(index = pd.date_range('2017-01-01', '2017-01-10', freq='1d'))
    # Average speed in miles per hour
    df['A'] = np.random.randint(low=198, high=205, size=len(df.index))
    df['B'] = np.random.random(size=len(df.index))*2
    #Create dummy NaN value on 2 cells
    df.iloc[2,1]=None
    df.iloc[5,0]=None
    print(df)
    A         B
    2017-01-01  203.0  1.175224
    2017-01-02  199.0  1.338474
    2017-01-03  198.0       NaN
    2017-01-04  198.0  0.652318
    2017-01-05  199.0  1.577577
    2017-01-06    NaN  0.234882
    2017-01-07  203.0  1.732908
    2017-01-08  204.0  1.473146
    2017-01-09  198.0  1.109261
    2017-01-10  202.0  1.745309
    #Delete row with dummy value
    df = df.dropna(how='any',axis=0)
    print(df)
    A         B
    2017-01-01  203.0  1.175224
    2017-01-02  199.0  1.338474
    2017-01-04  198.0  0.652318
    2017-01-05  199.0  1.577577
    2017-01-07  203.0  1.732908
    2017-01-08  204.0  1.473146
    2017-01-09  198.0  1.109261
    2017-01-10  202.0  1.745309

    Ver el referencia para más detalles.

    Si todo está bien con el DataFrame, cayendo Nan debería ser tan fácil como eso. Si esto aún no funciona, asegúrese de que tiene la correcta tipos de datos definidos por su columna (pd.to_numeric viene a la mente…)

    • mi solución fue incluir ‘null’ en el parámetro na_values([‘NaN’, ‘null’]) en los que se consigue el aprobado a los pandas.read_csv() para crear el df. Todavía no hay solución que ello no sea posible
    • Ver respuesta actualizada con el ejemplo de trabajo.
  2. 1

    —-claro null todas las colum——-

    df = df.dropna(how='any',axis=0)

    – – – – – si desea limpiar NULO por basado en 1 columna.—

    df[~df['B'].isnull()]

                    A         B
    2017-01-01  203.0  1.175224
    2017-01-02  199.0  1.338474
    **2017-01-03  198.0       NaN** clean
    2017-01-04  198.0  0.652318
    2017-01-05  199.0  1.577577
    2017-01-06    NaN  0.234882
    2017-01-07  203.0  1.732908
    2017-01-08  204.0  1.473146
    2017-01-09  198.0  1.109261
    2017-01-10  202.0  1.745309

    Por favor perdonen si hay errores.

    • esto funcionó para mí genial, gracias. También es bueno para la extracción de la única no valores nulos ..df[~df[‘B’].isnull()].único()
  3. 0

    Parece que el valor de la columna es «null» y no un verdadero NaN que es lo que dropna está destinado. Así que me gustaría probar:

    df[df.BBD != 'null']

    o, si el valor es en realidad una NaN a continuación,

    df[pd.notnull(df.BBD)]
  4. -1

    Usted podría tratar el siguiente:

    df.dropna(inplace=True)

    Que trabajó para mí.

Dejar respuesta

Please enter your comment!
Please enter your name here