Tentando retornar valores comparando-se duas colunas a partir de dois conjuntos de dados diferentes

0

Pergunta

Eu tenho duas corridas de kart conjuntos de dados com 9 colunas:

df1:

df1 dataset

df2: df2 dataset

Eu estou tentando configurar várias condições em que dois conjuntos de dados são comparados e tentando imprimir Verdadeiro ou falso, se as condições são satisfatórias depois de comparar. as condições são:

  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. status (df1) = estado (df2).

primeiro, eu tentei isso:

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')

mas eu tenho um erro dizendo:

ValueError: Can only compare identically-labeled Series objects

Estou fazendo certo? Eu tentei encontrar soluções alternativas, mas não encontraram qualquer relevantes para o que eu estou tentando fazer? Alguém pode me dizer se o procedimento que eu escolhi é o caminho certo? Obrigado

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

Melhor resposta

0

Este erro ocorre quando você tenta comparar dois pandas DataFrames e o índice de etiquetas ou rótulos de coluna não combinam perfeitamente com ou ele tem outra dimensão.

Você pode truncar DataFrames antes, onde a função com a instrução 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

Em outros idiomas

Esta página está em outros idiomas

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