首页 > 解决方案 > 根据熊猫数据框中的某些条件过滤行

问题描述

我有一个数据由三列组成:- 奖励日期(R_date),奖励名称(R_Name)和员工姓名(E_Name),我想要的是让那些在特定年份获得相同奖励三次或三次以上的员工. 在熊猫中,我想编写代码。如果有人知道,请帮忙。

例如

我的数据

E_Name R_Name R_日期
一个 R10 2019-02-02
一个 R10 2020-02-02
一个 R5 2020-02-02
一个 R10 2020-04-02
一个 R10 2020-12-12
R5 2020-07-03
R5 2020-10-11
C R10 2020-03-01
C R5 2020-05-02
D R5 2019-02-02
D R2 2019-03-02
D R5 2019-02-05
D R5 2019-06-02
D R5 2020-03-04

输出

E_Name R_Name 奖励计数
一个 R10 2020 3
D R5 2019 3

这是我的第一篇文章..如果我在解释问题时犯了任何错误,请告诉我

标签: python-3.xpandasdataframe

解决方案


您可以使用以下代码获得所需的内容,按步骤分解:

使用以下方法在新列中获取年份dt.year

df['year'] = df['R_date'].dt.year

groupby使用和的合并创建具有“Reward_Count”的列transform

df['Reward Count'] = df.groupby(['E_Name','year','R_Name'])['R_Name'].transform('count')

通过让人们获得 >= 3 个奖励来获得您想要的输出,并使用以下方法删除重复项drop_duplicates()

output = (df[df['Reward Count'] >= 3]).drop_duplicates('E_Name')

print(output)

  E_Name R_Name     R_date  year  Reward Count
1      A    R10 2020-02-02  2020             3
9      D     R5 2019-02-02  2019             3

推荐阅读