gpt4 book ai didi

python - Pandas groupby 总和如果组中的值

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:28 24 4
gpt4 key购买 nike

数据样本,实际数据有多年。 “Lien”或“Lien Endorsement”类型每年只能出现一次。其他类型可以在一年内重复。

tax_allyears =

tax_year    type                amount  
2013 Lien Interest 4
2014 Lien Interest 10
2014 Lien 100
2014 Lien Interest 15
2013 Lien Endorsement 200

这条线几乎可以工作,它按年份对“留置权利息”值求和。

by_year_interest = tax_allyears_1[tax_allyears_1['type'] == 'Lien Interest'].groupby(by=['tax_year'])['amount'].sum()

我想要的是区分有“留置权”和“留置权”的年份

by_year_Lien_interest = 一些函数

tax_year    amount
2014 25

by_year_Lien_Endorsement_interest = 一些函数

tax_year    amount
2013 4

最佳答案

您可以先创建两个不同的独特年份列表,一个是 Lien 所在的列表,另一个是 Lien Endorsement 所在的列表。然后在您的条件中使用这些唯一列表,使用 Series.isin 过滤 tax_allyears DataFrame .示例 -

lienyears = tax_allyears.loc[tax_allyears['type'] == 'Lien','tax_year'].unique().tolist()
lienendorsementyears = tax_allyears.loc[tax_allyears['type'] == 'Lien Endorsement','tax_year'].unique().tolist()

by_year_lien_interest = tax_allyears[(tax_allyears['type'] == 'Lien Interest') & tax_allyears['tax_year'].isin(lienyears)].groupby('tax_year')['amount'].sum()
by_year_lien_endorsement_interest = tax_allyears[(tax_allyears['type'] == 'Lien Interest') & tax_allyears['tax_year'].isin(lienendorsementyears)].groupby('tax_year')['amount'].sum()

演示 -

In [7]: tax_allyears
Out[7]:
tax_year type amount
0 2013 Lien Interest 4
1 2014 Lien Interest 10
2 2014 Lien 100
3 2014 Lien Interest 15
4 2013 Lien Endorsement 200

In [9]: lienyears = tax_allyears.loc[tax_allyears['type'] == 'Lien','tax_year'].unique().tolist()

In [10]: lienendorsementyears = tax_allyears.loc[tax_allyears['type'] == 'Lien Endorsement','tax_year'].unique().tolist()

In [13]: by_year_lien_interest = tax_allyears[(tax_allyears['type'] == 'Lien Interest') & tax_allyears['tax_year'].isin(lienyears)].groupby('tax_year')['amount'].sum()

In [15]: by_year_lien_endorsement_interest = tax_allyears[(tax_allyears['type'] == 'Lien Interest') & tax_allyears['tax_year'].isin(lienendorsementyears)].groupby('tax_year')['amount'].sum()

In [16]: by_year_lien_interest
Out[16]:
tax_year
2014 25
Name: amount, dtype: int64

In [17]: by_year_lien_endorsement_interest
Out[17]:
tax_year
2013 4
Name: amount, dtype: int64

关于python - Pandas groupby 总和如果组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com