Tratando de devolver a los valores mediante la comparación de dos columnas de dos conjuntos de datos diferentes

0

Pregunta

Tengo dos carreras de kart conjuntos de datos con 9 columnas:

df1:

df1 dataset

df2: df2 dataset

Estoy tratando de configurar varias condiciones en el que dos conjuntos de datos son comparados y tratando de imprimir Verdadero o falso, si las condiciones son satisfactorias después de comparar. las condiciones son:

  1. race_start (df1) <= race_start (df2)
  2. race_end (df1) >= race_end(df2)
  3. safety_start(df1) <= safety_start (df2)
  4. safety_end (df1) >= safety_end (df2)
  5. starting_front (df1) <= starting_front (df2)
  6. starting_back (df1) <= starting_back (df2)
  7. pitstop (df1) >= pitstop (df2)
  8. no_pitstop (df1) >= no_pitstop (df2)
  9. estado (df1) = estado (df2).

en primer lugar, he intentado esto:

import numpy as np
df1['race_start_final'] = np.where(df1.race_start <= df2.race_start, 'True', 'False')
df1['race_end_final'] = np.where(df1.race_end >= df2.race_end, 'True', 'False')
df1['safety_start_final'] = np.where(df1.safety_start <= df2.safety_start, 'True', 'False')
df1['safety_end_final'] = np.where(df1.safety_end >= df2.safety_end, 'True', 'False')
df1['starting_front_final'] = np.where(df1.starting_front <= df2.starting_front, 'True', 'False')
df1['starting_back_final'] = np.where(df1.starting_back <= df2.starting_back, 'True', 'False')
df1['pitstop_final'] = np.where(df1.pitstop >= df2.pitstop, 'True', 'False')
df1['pitstop_final'] = np.where(df1.pitstop >= df2.pitstop, 'True', 'False')
df1['status_final'] = np.where(df1.status == df2.status, 'True', 'False')

pero tengo un error que dice:

ValueError: Can only compare identically-labeled Series objects

Estoy haciendo lo correcto? Traté de encontrar soluciones alternativas, pero no encontró ninguna relevante para lo que estoy tratando de hacer? ¿Alguien puede decirme si el procedimiento elegí es el camino correcto? Gracias

dataframe dataset pandas python
2021-11-24 03:02:00
1

Mejor respuesta

0

Este error se produce cuando intenta comparar dos pandas DataFrames y el índice de las etiquetas o las etiquetas de las columnas no coinciden perfectamente o tiene dimensión diferente.

Usted puede truncar DataFrames de antes, donde la función con if-else:

df1 = pd.DataFrame([
    [10.5, 8.5],
    [8.5, 8.5]],
    columns=['race_start','race_end'])
df2 = pd.DataFrame([
    [9.8, 9.8],
    [9.8, 9.8],
    [8.5, 8.5]],
    columns=['race_start','race_end'])

if len(df1) > len(df2):
    df1=df1.tail(df2.shape[0]).reset_index()
else:
    df2=df2.tail(df1.shape[0]).reset_index()
    
df1['race_start_final'] = np.where(df1.race_start <= df2.race_start, 'True', 'False')
2021-11-25 15:32:27

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................