下面的数据框有4列:跑步者姓名、比赛日期、身高(单位:英寸)、前十名
我想按比赛日期分组,如果参赛者在该比赛日期进入前十名,则将他的身高(以英寸为单位)排在该比赛日期进入前十名的其他参赛者中。我该怎么做
这是原始数据帧:
>>> import pandas as pd >>> d = {"runner":['mike','paul','jim','dave','douglas'], ... "race_date":['2019-02-02','2019-02-02','2020-02-02','2020-02-01','2020-02-01'], ... "height_in_inches":[72,68,70,74,73], ... "top_ten_finish":["yes","yes","no","yes","no"]} >>> df = pd.DataFrame(d) >>> df runner race_date height_in_inches top_ten_finish 0 mike 2019-02-02 72 yes 1 paul 2019-02-02 68 yes 2 jim 2020-02-02 70 no 3 dave 2020-02-01 74 yes 4 douglas 2020-02-01 73 no >>>
这就是我想要的结果。请注意,如果他们没有在比赛前10名中完成比赛,那么新列的值将为0
runner race_date height_in_inches top_ten_finish if_top_ten_height_rank 0 mike 2019-02-02 72 yes 1 1 paul 2019-02-02 68 yes 2 2 jim 2020-02-02 70 no 0 3 dave 2020-02-01 74 yes 1 4 douglas 2020-02-01 73 no 0
谢谢大家!
我们可以使用
rank
进行groupby
+过滤您可以在
groupby()
上进行筛选和排序,然后重新分配:输出:
相关问题 更多 >
编程相关推荐