【问题标题】:Compare and extract values from two datasets从两个数据集中比较和提取值
【发布时间】:2021-06-09 21:51:58
【问题描述】:

我有一个数据框:

    Name    Segment   Axis    1      2      3      4      5
0  Amazon        1  slope  NaN     100     120    127    140
1  Amazon        1      x  0.0     1.0     2.0    3.0    4.0
2  Amazon        1      y  0.0     0.4     0.8    1.2    1.6
3  Amazon        2  slope  NaN     50      57     58     59
4  Amazon        2      x  0.0     2.0     4.0    6.0    8.0
5  Amazon        2      y  0.0     1.0     2.0    3.0    4.0

df2:

 Name  Segment  Optimal Cost
 Amazon   1      115
 Amazon   2      60
 Netflix  1      100
 Netflix  2      110

我正在尝试将轴列中的斜率值与相应的最佳成本值进行比较,并提取斜率、x 和 y 值。

规则是:找到最后一个大于其对应最优成本的第一个斜率值

如果没有大于最优成本的值,则报告斜率为零的位置。

如果只有值大于最优成本,则报告最高 y 值

预期输出:

     Name    Segment   slope   x    y     
0  Amazon        1      120    2   0.8
1  Amazon        2      NaN    0   0
  

【问题讨论】:

  • Stackoverflow 不是免费的编码服务。您应该发送honest attempt at the solution,然后然后在必要时询问有关它的具体问题。
  • @martineau 你能帮忙解决这个问题吗?还是没有?
  • 这意味着我不倾向于做我认为你应该在此处提问之前完成的工作。
  • @tj 法官,它在这个论坛上不起作用。给出答案后,您无法更改问题。至少为最初的答案投票。

标签: python pandas dataframe numpy


【解决方案1】:
s=df.set_index(['Name' , 'Segment','Axis']).stack().unstack('Axis').reset_index(level=2, drop=True)#melt dataframe 1
df3=pd.merge(s, df2, on=['Name',  'Segment'], how='left')#merge melted datframewith df2
df3[df3['slope']>df3['Optimal_Cost']].groupby(['Name',  'Segment']).first().reset_index()#Filter as required

           


Name         Segment  slope    x    y     Optimal_Cost
0  Amazon        1      120.0   2.0  0.8           115
1  Amazon        2      72.0    6.0  3.0            60

【讨论】:

  • 这个可行,但我对问题的规则做了一个小改动
  • @tj 法官,它在这个论坛上不起作用。给出答案后,您无法更改问题。至少为最初的答案投票。
猜你喜欢
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2015-07-10
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多