es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminando NaNs de múltiples Series de Pandas

El marco de datos se ve así:

import pandas as pd
import numpy as np  # utilizado para los valores nan

data = {'card_name': ['Diamonds', 'Clovers', 'HorseShoe'], '$20': [1000.0, 10.0, np.nan], '$25': [500.0, np.nan, 1873.0], '$30': [25, 213, 4657], '$40': [np.nan, 2199.0, np.nan], '$50': [1500.0, np.nan, 344.0], '$70': [np.nan, 43.0, 239.0], '$75': [30.0, 2.0, np.nan], '$100': [1.0, np.nan, 748.0]}
df = pd.DataFrame(data)

card_name   $20  $25  $30  $40  $50   $70   $75  $100
0  Diamonds   1000  500  25   NaN 1500   NaN    30    1
1  Clovers    10    NaN  213 2199  NaN   43     2    NaN
2  HorseShoe  NaN  1873 4657  NaN  344   239   NaN   748

Convertir una fila en una Serie, eliminando NaN y luego convirtiéndola en un marco de datos:

Diamonds = df.iloc[0]
Diamonds = Diamonds.dropna()
Diamonds.to_frame()

(Salida de la primera fila como una serie sin NaN)

card_name  Diamonds
$20        1000
$25        500
$30        25
$50        1500
$75        30
$100       1

¿Cómo puedo hacer esto para todas las filas sin tener que volver a escribir el código de arriba una y otra vez?

Estoy usando Python y Pandas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes crear un nuevo dataframe y usar un bucle for para iterar a través de cada fila en el dataframe original, eliminando los valores NaN y agregando la serie resultante al nuevo dataframe. Aquí hay un ejemplo de código:

    new_df = pd.DataFrame() # crea un nuevo dataframe vacío
    
    for i in range(len(df)): # itera a través de cada fila en el dataframe original
        row = df.iloc[i] # selecciona la fila como una serie
        row = row.dropna() # elimina los valores NaN
        row_df = row.to_frame().transpose() # convierte la serie resultante en un dataframe
        new_df = new_df.append(row_df) # agrega el dataframe de fila al nuevo dataframe
    
    

    Esto creará un nuevo dataframe new_df con cada fila del dataframe original como una fila separada en el nuevo dataframe, con los valores NaN eliminados.

Comments are closed.