我有一个csv文件,其中包含n行房屋销售。
House | ||
---|---|---|
One | Semi | 2010 |
两个 | 平面 | 2011 |
三间 | 平房 | 2012 |
四个 | Semi | 2013|
五个 | 半 | 013[/tr>
您可以使用panda的get_dummies方法来实现同样的目的。它基本上为一个分类列创建多个列,并用值填充它。
df = pd.DataFrame({'House_type':['Semi','Flat','Bungalow','Semi','Semi'],'sale_year':[2010,2011,2012,2013,2013]})
df_final = pd.get_dummies(df,columns=['sale_year']).groupby('House_type').sum()
df_final
您可以在此处使用pivot_table
:
result = pd.pivot_table(df, index='House_type', columns='Sale_year',
aggfunc='count', fill_value=0)
它直接给出:
House
Sale_year 2010 2011 2012 2013
House_type
Flat 0 1 0 0
Semi 1 0 0 2
bungalow 0 0 1 0
如果你想的话,你可以稍微格式化一下:
result.columns = result.columns.get_level_values(1).rename(None)
result = result.reset_index()
最终得到:
House_type 2010 2011 2012 2013
0 Flat 0 1 0 0
1 Semi 1 0 0 2
2 bungalow 0 0 1 0