Pandas 按两列分组,一列按行,另一列按列
我有一个 csv 文件,其中包含 n 行房屋销售数据。
房屋 | House_type | Sale_year |
---|---|---|
一个 | 半 | 2010 年 |
两个 | 平房 | 2011 年 |
三个 | 平房 | 2012 |
年四个 | 半 | 2013 年 |
5 个 | 半 | 2013 |
我想按 House_type(公寓、平房、半)按 sale_year(2010、2011 等)对数据进行分组算作列。 所以我尝试以以下格式输出数据。
House_type | 2010 | 2011 | 2012 | 2013 |
---|---|---|---|---|
Semi | 1 | 0 | 0 | 2 |
Flat | 0 | 1 | 0 | 0 |
Bungalow | 0 | 0 | 1 | 0 |
但是,当我运行代码时,它会返回 House_type 和 Sale_year 作为两列。
house= housedata.groupby(["House_type", "Sale_year"])["Sale_year"].count()
house
House_type Sale_year
Flat 2011.0 1
bungalow 2012.0 1
Semi 2010.0 1
2013.0 2
如何让 pandas 输出所需的数据?
非常感谢
I have a csv file that contains n rows of sales of houses.
House | House_type | Sale_year |
---|---|---|
One | Semi | 2010 |
two | Flat | 2011 |
three | bungalow | 2012 |
four | Semi | 2013 |
five | Semi | 2013 |
I want to groupby the data by House_type (flat, bungalow, semi) by sale_year (2010,2011,etc) counts as columns.
So I'm trying to output the data in the below format.
House_type | 2010 | 2011 | 2012 | 2013 |
---|---|---|---|---|
Semi | 1 | 0 | 0 | 2 |
Flat | 0 | 1 | 0 | 0 |
bungalow | 0 | 0 | 1 | 0 |
However, when I run the code, it returns both House_type and Sale_year as two columns.
house= housedata.groupby(["House_type", "Sale_year"])["Sale_year"].count()
house
House_type Sale_year
Flat 2011.0 1
bungalow 2012.0 1
Semi 2010.0 1
2013.0 2
How do I get pandas to output the data desired?
Many thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 pandas 的 get_dummies 方法实现相同的目的。它基本上为分类列创建多个列并用值填充它。
You can achieve the same using get_dummies method of pandas. It basically creates multiple columns for a categorical column and fills it with values.
您可以在这里使用
pivot_table
:它直接给出:
如果您愿意,可以稍微格式化它:
最终得到:
You can use
pivot_table
here:It gives directly:
You can format it a little if you want:
to finally get: