代码之家  ›  专栏  ›  技术社区  ›  Yog

如何在条件下应用公式生成新列并应用两种排序类型?

  •  0
  • Yog  · 技术社区  · 7 年前

    输入:

    import pandas as pd
    data = [['abc1',55,98,100],['abc2',56,97,101],['abc3',13,18,55],['abc4',56,79,100]]
    df = pd.DataFrame(data,columns=['Bus','Existing_Fare','Petrol_Price','Salary_Hike'])
    
    1. 我需要应用这个公式。

    如果汽油价格>80:汽油价格=80,则:数据框中给出的汽油价格

    新价格=现有车费+汽油价格+2*加薪

    1. 如果两个分数有相同的值,那么给他们相同的排名

    输出

    Bus New_Price   Rank_Order  Rank_duplicates
    0   abc1    335  1          2
    1   abc2    338  2          1
    2   abc3    141  3          3
    3   abc4    335  4          2
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   piRSquared    7 年前

    df.assign(
        Petrol_Price=df.Petrol_Price.clip(0, 80)
    ).eval(
        'New_Price=Existing_Fare + Petrol_Price + 2 * Salary_Hike'
    ).assign(
        Rank_Duplicates=lambda d: d.New_Price.rank(method='dense', ascending=False)
    )
    
        Bus  Existing_Fare  Petrol_Price  Salary_Hike  New_Price  Rank_Duplicates
    0  abc1             55            80          100        335              2.0
    1  abc2             56            80          101        338              1.0
    2  abc3             13            18           55        141              3.0
    3  abc4             56            79          100        335              2.0