我有下面的数据框,其中包含了一个竞赛的分数,以及一个计算每个人参赛次数的列。
import pandas as pd
df = pd.DataFrame({'Name': ['John', 'Jim', 'John','Jim', 'John','Jim','John','Jim','John','Jim','Jack','Jack','Jack','Jack'],'Score': [10,8,9,3,5,0, 1, 2,3, 4,5,6,8,9]})
df['Entry_No'] = df.groupby(['Name']).cumcount() + 1
df
然后,我有另一个表,其中存储了每个人可以拥有的最大条目数的数据:
df2 = pd.DataFrame({'Name': ['John', 'Jim', 'Jack'],'Limit': [2,3,1]})
df2
我尝试根据df2
中的每个人删除df
中条目号大于Limit
的行,因此我的预期输出如下:
如果有任何关于如何帮助我实现这一目标的想法,那将是非常棒的!谢谢
2条答案
按热度按时间jjhzyzn01#
您可以使用
pandas.merge
创建另一个 Dataframe ,并根据您的条件删除列:我使用
how="left"
来保持df
和reset_index(drop=True)
的顺序,以重置生成的 Dataframe 的索引。tsm1rwdh2#
您可以对2个 Dataframe 执行
join
操作,然后在满足以下条件的情况下删除:给出预期输出