Iki farklı veri kümesinden iki sütunu karşılaştırarak değerleri döndürmeye çalışmak

0

Soru

9 Sütunlu iki yarış kartı veri kümem var:

df1:

df1 dataset

df2: df2 dataset

İki veri kümesinin karşılaştırıldığı birden çok koşul oluşturmaya çalışıyorum ve karşılaştırmadan sonra koşullar tatmin edici ise Doğru veya yanlış yazdırmaya çalışıyorum. koşullar şunlardır:

  1. yarış_başlangıç (df1)
  2. race_end (df1) > = yarış_end( df2)
  3. safety_start (df1)
  4. safety_end (df1) > = safety_end (df2)
  5. başlangıç_ön (df1)
  6. startıng_back (df1)
  7. pitstop (df1) > = pitstop( df2)
  8. no_pıtstop (df1) > = no_pıtstop( df2)
  9. durum (df1) = durum (df2).

ilk önce bunu denedim :

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

ama bir hata var demek:

ValueError: Can only compare identically-labeled Series objects

Doğru yapıyor muyum? Alternatif çözümler bulmaya çalıştım ama yapmaya çalıştığım şeyle alakalı bir şey bulamadım mı? Seçtiğim prosedürün doğru yol olup olmadığını kimse söyleyebilir mi? Teşekkürler

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

En iyi cevabı

0

Bu hata, iki panda veri çerçevesini karşılaştırmaya çalıştığınızda oluşur ve dizin etiketleri veya sütun etiketleri mükemmel şekilde eşleşmiyor veya farklı bir boyuta sahip.

İf-else deyimi ile where işlevinden önce veri çerçevelerini kesebilirsiniz:

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

Diğer dillerde

Bu sayfa diğer dillerde

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