pandas 获取同一年的已审计值,而不是临时值

n3h0vuf2  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(101)

我有公司编号的公司数据。是他们的公司名称年份和审计类型。对于每个公司,他们的数据是过去几年的数据,我只想要最近3年的数据,并与此沿着优先考虑审计而不是临时的。例如

Sr no.  number   Company    year    type          value
0   223 abc 2015    audited         3
1   223 abc 2018    provisional 4
2   223 abc 2019    audited         5
3   223 abc 2019    provisional 6
4   223 abc 2020    audited         7
5   224 def 2017    provisional 8
6   224 def 2016    audited         9
7   224 def 2017    audited         10
8   224 def 2018    audited         11
9   224 def 2019    provisional 12

预期输出

number  Company    Year type 
223     abc       2018 provisional
223     abc        2019 audited
223     abc        2020 audited
224     def        2017 audites
224     def        2018 audited
224     def        2019 provisional
rbpvctlc

rbpvctlc1#

在将Categorical类型分配给您的“type”之后,使用groupby.max,并过滤大于或等于2017年的年份(这里使用query):

out = (df
   .assign(type=pd.Categorical(df['type'], ['provisional', 'audited'],
                               ordered=True))
   .query('year >= 2017')
   .groupby(['number', 'Company', 'year'], as_index=False)['type'].max()
)
  • 注意,你可以用groupby.min实现同样的效果,并将“类型”保持为字符串,如"audited"<"provisional"

输出:

number Company  year         type
0     223     abc  2018  provisional
1     223     abc  2019      audited
2     223     abc  2020      audited
3     224     def  2017      audited
4     224     def  2018      audited
5     224     def  2019  provisional

相关问题