【问题标题】:Pandas calculate percent from two data frames by joining specify indexPandas 通过加入指定索引计算两个数据帧的百分比
【发布时间】:2021-12-30 06:23:03
【问题描述】:

我生成了两个 Dataframe (df1, df2)。 如何计算两个 Dataframe 之间的差异以生成最终 Dataframe? 按日期计算百分比差异:(df1-df2)/df2。

df1:

Score1 Score2
Date Student
2005-01-01 Peter 15 18
2005-03-01 Peter 110 330
John 120 360
Mary 90 210
Alan 115 270

df2:

Score1 Score2
Date Student
2005-01-01 Standard 10 20
2005-03-01 Standard 100 300

最终数据框:

Score1 Score2
Date Student
2005-01-01 Peter 0.5 -0.1
2005-03-01 Peter 0.1 0.1
John 0.2 0.2
Mary -0.1 -0.3
Alan 0.15 -0.1

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    您可以通过DataFrame.droplevelDataFrame.reset_index 删除第二级df2

    df22 = df2.droplevel(1)
    #alternative
    #df22 = df2.reset_index(level=1, drop=True)
    
    df = df1.sub(df22).div(df22)
    print (df)
                        Score1  Score2
    Date       Student                
    2005-01-01 Peter      0.50    -0.1
    2005-03-01 Peter      0.10     0.1
               John       0.20     0.2
               Mary      -0.10    -0.3
               Alan       0.15    -0.1
    

    或者如果需要选择级别Standard:

    df22 = df2.xs('Standard', level=1)     
    df = df1.sub(df22).div(df22)  
    

    【讨论】:

    • 得到我预期的结果。非常感谢!
    猜你喜欢
    • 2019-08-12
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2016-09-06
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多