熊猫如何复制和添加基于两列的值的新列

时间:2020-09-20 03:03:35

标签: python pandas dataframe jupyter

我有一个称为竞赛的数据框

我感兴趣的两列

TST =拍摄总数 SM =拍摄

我想复制这个称为竞赛的数据框,并创建一个划分SM / TST的新列

我正在使用pandas和numpy。制作数据帧新副本的步骤。使用此计算将新列添加到重复的数据帧中,称为shotperc =射击百分比将非常有帮助。我本周刚开始使用Jupyter笔记本。

1 个答案:

答案 0 :(得分: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

以上方法均不能更改原始数据框,希望对您有所帮助!