【问题标题】:Pandas how to duplicate and add new column with values based off two columnsPandas 如何使用基于两列的值复制和添加新列
【发布时间】:2020-09-20 03:03:35
【问题描述】:

我有一个名为比赛的数据框

有两列我感兴趣

TST = 总拍摄次数 SM = 投篮次数

我想复制这个名为比赛的数据框并创建一个新的列来划分 SM/TST

我正在使用 pandas 和 numpy。制作数据框的新副本的步骤。将新列添加到重复数据帧中,此计算称为 shotperc = shot percent 将非常有帮助。我这周才开始使用 Jupyter Notebooks。

【问题讨论】:

    标签: python pandas dataframe jupyter


    【解决方案1】:

    有很多方法可以实现你想要的。

    1. 复制原始数据框,存储到一个新变量中,将新列分配给这个新变量。
    new_contest = contest.copy()
    new_contest["shot_percent"] = new_contest["shots_made"] / new_contest["shots_taken"]
    
    print(new_contest)
       shots_taken  shots_made  shot_percent
    0           90          45          0.50
    1          100          50          0.50
    2          200         150          0.75
    3           80          60          0.75
    4           50          10          0.20
    
    1. 使用 assign 方法,该方法隐式执行 copy 以确保您的原始数据帧保持不变。
    new_contest = contest.assign(shot_percent=lambda df: df["shots_made"] / df["shots_taken"])
    
    print(new_contest)
       shots_taken  shots_made  shot_percent
    0           90          45          0.50
    1          100          50          0.50
    2          200         150          0.75
    3           80          60          0.75
    4           50          10          0.20
    
    1. 可能是最不常见的选项,但请使用eval DataFrame 方法,该方法还隐式复制原始数据帧以确保您的原始数据不会更改。这也是 imo 可读性最高的结果。
    new_contest = contest.eval("shot_percent = shots_made / shots_taken")
    
    print(new_contest)
       shots_taken  shots_made  shot_percent
    0           90          45          0.50
    1          100          50          0.50
    2          200         150          0.75
    3           80          60          0.75
    4           50          10          0.20
    

    以上方法都不会改变你原来的数据框,希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多