Snaží návratové hodnoty porovnáním dvou sloupců ze dvou různých datových souborů

0

Otázka

Mám dvě závodní kart datových sad s 9 sloupců:

df1:

df1 dataset

df2: df2 dataset

Snažím se nastavit více podmínek, kde dva soubory údajů jsou ve srovnání a snaží se vytisknout True nebo false, pokud jsou podmínky vyhovující po porovnání. podmínky jsou:

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

nejprve jsem zkoušel tento:

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

ale dostal jsem chybu, že:

ValueError: Can only compare identically-labeled Series objects

Dělám to správně? Snažil jsem se najít alternativní řešení, ale nenašli žádné relevantní pro to, co se snažím dělat? Může mi někdo říct, jestli tento postup jsem si zvolil, je správná cesta? Díky

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

Nejlepší odpověď

0

K této chybě dochází při pokusu porovnat dvě pandy datové části rámců a buď index štítky či popisky sloupců dokonale neodpovídají, nebo to má jiný rozměr.

Můžete zkrátit datové části rámců, než kde funkce s 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

V jiných jazycích

Tato stránka je v jiných jazycích

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