pandas将groupby值转换为列名

时间:2017-10-23 14:39:21

标签: python pandas group-by

我有一张熊猫表,我有很多贷款到期年份(任何一年可以有多笔贷款),贷款名义和贷款类型(固定利率/浮动利率)。

我想将公司的债务塔提取到数据框表中,该表看起来像:

年份,FixedRate,FloatingRate
2018年,全额固定贷款,指定年份的sumofallfloatloans。

成熟年份类型名义(MM)
0 2020固定600.0
1 2021 FIXED 750.0
2 2021 FLOATING 250.0
3 2025 FIXED 700.0

转换为
年,固定,FLOAT
2020,600,0 2021,750,250
2025 700,0

我怎么能用熊猫做到这一点?

非常感谢, 托尼

3 个答案:

答案 0 :(得分:2)

您似乎需要groupby并汇总sum,最后通过unstack转发:

df = df.groupby(['Year', 'LoanType'])['loan notional'].sum().unstack()

答案 1 :(得分:2)

使用pd.crosstabpivot也可以实现这一目标: - )

pd.crosstab(index =df['MaturityYear'],columns =df['Type'],values =df['Notional'],aggfunc=np.sum).fillna(0)
Out[877]: 
Type          FIXED  FLOATING
MaturityYear                 
2020          600.0       0.0
2021          750.0     250.0
2025          700.0       0.0

答案 2 :(得分:2)

这是一个支点解决方案,即

df.pivot(index='Year',columns='Type',values='Notional(MM)').fillna(0)
Type  FIXED  FLOATING
Year                 
2020  600.0       0.0
2021  750.0     250.0
2025  700.0       0.0

如果需要总和,即

df.pivot_table(index='Year',columns='Type',values='Notional(MM)',aggfunc='sum').fillna(0)