DiegoDG01

DataFrame

May 5th, 2022 (edited)
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.80 KB | None | 0 0
  1. import pandas as pd
  2.  
  3. # Debbuging
  4. # import pydevd_pycharm
  5. # pydevd_pycharm.settrace('localhost', port=9999, stdoutToServer=True, stderrToServer=True)
  6.  
  7. # Retorna el resultado de la operación
  8. def formula(min, max):
  9.     # (((100 -M)*m)/100) +M
  10.     return (((100 - max) * min) / 100) + max
  11.  
  12. # Lee el archivo csv
  13. df = pd.read_csv('expedientes.csv')
  14.  
  15. # Creamos un json que almacenara los datos temporalmente
  16. temp_df = {}
  17.  
  18. # Creamos una iteración para recorrer el dataframe
  19. # y obtener el ID del expediente
  20. for expediente in df['Expediente']:
  21.  
  22.     # Obtenemos el ID del expediente
  23.     # y lo asiganmos al json así como generar dos listas que contendrán
  24.     # los datos correspondientes a cada columna de minimo y maximo
  25.     temp_df[expediente] = {'numbers': {
  26.         'maximo': [],
  27.         'minimo': [],
  28.     }}
  29.  
  30.     # Obtenemos los datos de cada columna
  31.     # que corresponda al ID del expediente
  32.     values = df[df['Expediente'] == expediente]
  33.  
  34.     # Generamos una iteración para recorrer las columnas
  35.     # con los datos obtenidos previamente
  36.     for key in values:
  37.         # Validamos que la columna corresponda a una de las dos
  38.         # maximos o minimos
  39.         if key == 'minimo' or key == 'maximo':
  40.             # Obtenemos los datos de la columna
  41.             for value in values[key]:
  42.                 # Agregamos los datos al json temporal
  43.                 temp_df[expediente]['numbers'][key].append(value)
  44.  
  45.  
  46. # Creamos una iteración para recorrer el json temporal
  47. # atraves de los IDs de expediente
  48. for expediente in temp_df:
  49.  
  50.     # Obtenemos el valor maximo de la lista de maximos
  51.     max_restante_max = max(temp_df[expediente]['numbers']['maximo'])
  52.     # Obtenemos el valor minimo de la lista de maximos
  53.     max_restante_min = min(temp_df[expediente]['numbers']['maximo'])
  54.  
  55.     # Obtenemos el valor maximo de la lista de minimos
  56.     min_restante_max = max(temp_df[expediente]['numbers']['minimo'])
  57.     # Obtenemos el valor minimo de la lista de minimos
  58.     min_restante_min = min(temp_df[expediente]['numbers']['minimo'])
  59.  
  60.     # Llamamos a la función formula para obtener el resultado de max_restante
  61.     temp_df[expediente]['max_restante'] = formula(max_restante_min, max_restante_max)
  62.     # Llamamos a la función formula para obtener el resultado de min_restante
  63.     temp_df[expediente]['min_restante'] = formula(min_restante_min, min_restante_max)
  64.  
  65. # Generamos una iteración para recorrer el json temporal
  66. # y agregar los valores al dataframe original
  67. for expediente in temp_df:
  68.  
  69.     # add new columns to the dataframe min_restante and max_restante
  70.     df.loc[df['Expediente'] == expediente, 'min_restante'] = temp_df[expediente]['min_restante']
  71.     df.loc[df['Expediente'] == expediente, 'max_restante'] = temp_df[expediente]['max_restante']
  72.  
  73.     # print the dataframe
  74. print(df)
  75.  
Advertisement
Add Comment
Please, Sign In to add comment