dcast并聚合成大熊猫

时间:2018-07-31 07:27:54

标签: python pandas

我来自R的背景,因此很难实现在R中可以轻松实现的目标,我有以下pandas数据框。

ID   credit_active    credit_currency      credit_type
1    Active           Dollars              Home
1    Closed           Dollars              Home
1    Active           Euro                 Home
2    Active           Dollars              Home
2    Closed           Dollars              Home
2    Active           Euro                 Home

我想要以下格式的数据

ID     Active    Closed     Dollars     Euro     Home
1      2         1          2           1        3
2      2         1          2           1        3

我可以通过以下简单命令在R中实现此目标

dcast(melt(setDT(bureau), id.var = 'ID'), ID ~ value)

我该怎么做大熊猫?

1 个答案:

答案 0 :(得分:1)

meltgroupby一起使用,聚合size并最后由unstack重塑:

df = df.melt('ID').groupby(['ID', 'value']).size().unstack(fill_value=0)

使用pivot_table的另一种解决方案:

df = df.melt('ID').pivot_table(index='ID', columns='value', aggfunc='size')

或使用crosstab

df1 = df.melt('ID')
df = pd.crosstab(df1['ID'], df1['value']) 

print (df)
value  Active  Closed  Dollars  Euro  Home
ID                                        
1           2       1        2     1     3
2           2       1        2     1     3