【问题标题】:trying to return values by comparing two columns from two different datasets尝试通过比较来自两个不同数据集的两列来返回值
【发布时间】:2022-01-02 11:59:19
【问题描述】:

我有两个 9 列的赛车数据集:

df1:

df2:

我正在尝试设置多个比较两个数据集的条件,并尝试在比较后满足条件时打印出 True 或 false。条件是:

  1. race_start (df1)
  2. race_end (df1) >= race_end(df2)
  3. safety_start(df1)
  4. safety_end (df1) >= safety_end (df2)
  5. starting_front (df1)
  6. starting_back (df1)
  7. 进站 (df1) >= 进站 (df2)
  8. no_pitstop (df1) >= no_pitstop (df2)
  9. 状态 (df1) = 状态 (df2)。

首先,我试过这个:

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

但我收到一条错误消息:

ValueError: Can only compare identically-labeled Series objects

我做得对吗?我尝试寻找替代解决方案,但没有找到任何与我正在尝试做的事情相关的事情?谁能告诉我我选择的程序是否正确?谢谢

【问题讨论】:

  • 1.请将您的数据框粘贴为问题中的文本。 2. 请粘贴完整的错误。

标签: python pandas dataframe dataset


【解决方案1】:

当您尝试比较两个熊猫DataFrame和索引标签或列标签并不完全匹配或具有不同的维度时,会发生此错误。

您可以在与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')

【讨论】:

    猜你喜欢
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多