import pandas as pd # Cargar archivo input_file = 'input.csv' output_file = 'filtered_output.csv' # Leer CSV df = pd.read_csv(input_file) # Paso 1: Identificar el monto del Tip por orden # Creamos un nuevo DataFrame que contiene el monto del Tip por cada orden tip_montos = df[df['item'].str.contains('Tip', case=False, na=False)][['orden', 'monto']] tip_montos = tip_montos.rename(columns={'monto': 'monto_tip'}) # Paso 2: Unir esa información al DataFrame original (por la columna 'orden') df = df.merge(tip_montos, on='orden', how='left') # Paso 3: Aplicar el filtro original (conservar órdenes repetidas que tengan 'Tip') filtered_df = df.groupby('orden').filter(lambda x: (x['item'].str.contains('Tip', case=False, na=False).any())) # Paso 4: Eliminar filas sin 'metodo' filtered_df = filtered_df[filtered_df['metodo'].notna()] # Paso 5: Eliminar columna 'item' filtered_df = filtered_df.drop(columns=['item']) # Guardar resultado filtered_df.to_csv(output_file, index=False) print(f'Filtrado completado. Archivo guardado como {output_file}')
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter