我来自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)
我该怎么做大熊猫?
答案 0 :(得分:1)
将melt
与groupby
一起使用,聚合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